AnonSec Shell
Server IP : 162.214.74.102  /  Your IP : 216.73.217.114
Web Server : Apache
System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64
User : lrsys ( 1015)
PHP Version : 5.6.40
Disable Function : exec,passthru,shell_exec,system
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/lrsys/public_html/lrsys_apps/marisol/AR/ALT/ex/jsartoolkit5/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/lrsys/public_html/lrsys_apps/marisol/AR/ALT/ex/jsartoolkit5/artoolkit.debug.js
// 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_WEB = typeof window === 'object';
// Three configurations we can be running in:
// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false)
// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false)
// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true)
var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
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) {
    var ret = Module['read'](filename, true);
    if (!ret.buffer) {
      ret = new Uint8Array(ret);
    }
    assert(ret.buffer);
    return ret;
  };

  Module['load'] = function load(f) {
    globalEval(read(f));
  };

  if (!Module['thisProgram']) {
    if (process['argv'].length > 1) {
      Module['thisProgram'] = process['argv'][1].replace(/\\/g, '/');
    } else {
      Module['thisProgram'] = 'unknown-program';
    }
  }

  Module['arguments'] = process['argv'].slice(2);

  if (typeof module !== 'undefined') {
    module['exports'] = Module;
  }

  process['on']('uncaughtException', function(ex) {
    // suppress ExitStatus exceptions from showing an error
    if (!(ex instanceof ExitStatus)) {
      throw ex;
    }
  });

  Module['inspect'] = function () { return '[Emscripten Module object]'; };
}
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;
  }

}
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_WORKER) {
    Module['load'] = importScripts;
  }

  if (typeof Module['setWindowTitle'] === 'undefined') {
    Module['setWindowTitle'] = function(title) { document.title = title };
  }
}
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,
  prepVararg: function (ptr, type) {
    if (type === 'double' || type === 'i64') {
      // move so the load is aligned
      if (ptr & 7) {
        assert((ptr & 7) === 4);
        ptr += 4;
      }
    } else {
      assert((ptr & 3) === 0);
    }
    return ptr;
  },
  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) {
      assert(args.length == sig.length-1);
      if (!args.splice) args = Array.prototype.slice.call(args);
      args.splice(0, 0, ptr);
      assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\'');
      return Module['dynCall_' + sig].apply(null, args);
    } else {
      assert(sig.length == 1);
      assert(('dynCall_' + sig) in Module, 'bad function pointer type - no table for sig \'' + sig + '\'');
      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;
  },
  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];
  },
  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);(assert((((STACKTOP|0) < (STACK_MAX|0))|0))|0); return ret; },
  staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + (assert(!staticSealed),size))|0;STATICTOP = (((STATICTOP)+15)&-16); return ret; },
  dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + (assert(DYNAMICTOP > 0),size))|0;DYNAMICTOP = (((DYNAMICTOP)+15)&-16); if (DYNAMICTOP >= TOTAL_MEMORY) { var success = enlargeMemory(); if (!success) { DYNAMICTOP = ret;  return 0; } }; 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))) : ((+((low>>>0)))+((+((high|0)))*(+4294967296)))); return ret; },
  GLOBAL_BASE: 8,
  QUANTUM_SIZE: 4,
  __dummy__: 0
}



Module["Runtime"] = Runtime;



//========================================
// Runtime essentials
//========================================

var __THREW__ = 0; // Used in checking for thrown exceptions.

var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
var EXITSTATUS = 0;

var undef = 0;
// tempInt is used for 32-bit signed values or smaller. tempBigInt is used
// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
var tempI64, tempI64b;
var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;

function assert(condition, text) {
  if (!condition) {
    abort('Assertion failed: ' + text);
  }
}

var globalScope = this;

// Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
function getCFunc(ident) {
  var func = Module['_' + ident]; // closure exported function
  if (!func) {
    try {
      func = eval('_' + ident); // explicit lookup
    } catch(e) {}
  }
  assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
  return func;
}

var cwrap, ccall;
(function(){
  var JSfuncs = {
    // Helpers for cwrap -- it can't refer to Runtime directly because it might
    // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find
    // out what the minified function name is.
    'stackSave': function() {
      Runtime.stackSave()
    },
    'stackRestore': function() {
      Runtime.stackRestore()
    },
    // type conversion from js to c
    'arrayToC' : function(arr) {
      var ret = Runtime.stackAlloc(arr.length);
      writeArrayToMemory(arr, ret);
      return ret;
    },
    'stringToC' : function(str) {
      var ret = 0;
      if (str !== null && str !== undefined && str !== 0) { // null string
        // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0'
        ret = Runtime.stackAlloc((str.length << 2) + 1);
        writeStringToMemory(str, ret);
      }
      return ret;
    }
  };
  // For fast lookup of conversion functions
  var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']};

  // C calling interface. 
  ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
    var func = getCFunc(ident);
    var cArgs = [];
    var stack = 0;
    assert(returnType !== 'array', 'Return type should not be "array".');
    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 ((!opts || !opts.async) && typeof EmterpreterAsync === 'object') {
      assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling ccall');
    }
    if (opts && opts.async) assert(!returnType, 'async ccalls cannot return values');
    if (returnType === 'string') ret = Pointer_stringify(ret);
    if (stack !== 0) {
      if (opts && opts.async) {
        EmterpreterAsync.asyncFinalizers.push(function() {
          Runtime.stackRestore(stack);
        });
        return;
      }
      Runtime.stackRestore(stack);
    }
    return ret;
  }

  var sourceRegex = /^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;
  function parseJSFunc(jsfunc) {
    // Match the body and the return value of a javascript function source
    var parsed = jsfunc.toString().match(sourceRegex).slice(1);
    return {arguments : parsed[0], body : parsed[1], returnValue: parsed[2]}
  }
  var JSsource = {};
  for (var fun in JSfuncs) {
    if (JSfuncs.hasOwnProperty(fun)) {
      // Elements of toCsource are arrays of three items:
      // the code, and the return value
      JSsource[fun] = parseJSFunc(JSfuncs[fun]);
    }
  }

  
  cwrap = function cwrap(ident, returnType, argTypes) {
    argTypes = argTypes || [];
    var cfunc = getCFunc(ident);
    // When the function takes numbers and returns a number, we can just return
    // the original function
    var numericArgs = argTypes.every(function(type){ return type === 'number'});
    var numericRet = (returnType !== 'string');
    if ( numericRet && numericArgs) {
      return cfunc;
    }
    // Creation of the arguments list (["$1","$2",...,"$nargs"])
    var argNames = argTypes.map(function(x,i){return '$'+i});
    var funcstr = "(function(" + argNames.join(',') + ") {";
    var nargs = argTypes.length;
    if (!numericArgs) {
      // Generate the code needed to convert the arguments from javascript
      // values to pointers
      funcstr += 'var stack = ' + JSsource['stackSave'].body + ';';
      for (var i = 0; i < nargs; i++) {
        var arg = argNames[i], type = argTypes[i];
        if (type === 'number') continue;
        var convertCode = JSsource[type + 'ToC']; // [code, return]
        funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';';
        funcstr += convertCode.body + ';';
        funcstr += arg + '=' + convertCode.returnValue + ';';
      }
    }

    // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore
    var cfuncname = parseJSFunc(function(){return cfunc}).returnValue;
    // Call the function
    funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');';
    if (!numericRet) { // Return type can only by 'string' or 'number'
      // Convert the result to a string
      var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue;
      funcstr += 'ret = ' + strgfy + '(ret);';
    }
    funcstr += "if (typeof EmterpreterAsync === 'object') { assert(!EmterpreterAsync.state, 'cannot start async op with normal JS calling cwrap') }";
    if (!numericArgs) {
      // If we had a stack, restore it
      funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';';
    }
    funcstr += 'return ret})';
    return eval(funcstr);
  };
})();
Module["ccall"] = ccall;
Module["cwrap"] = cwrap;

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) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
      case 'float': HEAPF32[((ptr)>>2)]=value; break;
      case 'double': HEAPF64[((ptr)>>3)]=value; break;
      default: abort('invalid type for setValue: ' + type);
    }
}
Module["setValue"] = setValue;


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;
    }
    assert(type, 'Must know what type to store in allocate!');

    if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later

    setValue(ret+i, curr, type);

    // no need to look up size unless type changes, so cache it
    if (previousType !== type) {
      typeSize = Runtime.getNativeTypeSize(type);
      previousType = type;
    }
    i += typeSize;
  }

  return ret;
}
Module["allocate"] = allocate;

// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready
function getMemory(size) {
  if (!staticSealed) return Runtime.staticAlloc(size);
  if ((typeof _sbrk !== 'undefined' && !_sbrk.called) || !runtimeInitialized) return Runtime.dynamicAlloc(size);
  return _malloc(size);
}
Module["getMemory"] = getMemory;

function Pointer_stringify(ptr, /* optional */ length) {
  if (length === 0 || !ptr) return '';
  // TODO: use TextDecoder
  // Find the length, and check for UTF while doing so
  var hasUtf = 0;
  var t;
  var i = 0;
  while (1) {
    assert(ptr + i < TOTAL_MEMORY);
    t = HEAPU8[(((ptr)+(i))>>0)];
    hasUtf |= t;
    if (t == 0 && !length) break;
    i++;
    if (length && i == length) break;
  }
  if (!length) length = i;

  var ret = '';

  if (hasUtf < 128) {
    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;
  }
  return Module['UTF8ToString'](ptr);
}
Module["Pointer_stringify"] = Pointer_stringify;

// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns
// a copy of that string as a Javascript String object.

function AsciiToString(ptr) {
  var str = '';
  while (1) {
    var ch = HEAP8[((ptr++)>>0)];
    if (!ch) return str;
    str += String.fromCharCode(ch);
  }
}
Module["AsciiToString"] = AsciiToString;

// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP.

function stringToAscii(str, outPtr) {
  return writeAsciiToMemory(str, outPtr, false);
}
Module["stringToAscii"] = stringToAscii;

// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns
// a copy of that string as a Javascript String object.

function UTF8ArrayToString(u8Array, idx) {
  var u0, u1, u2, u3, u4, u5;

  var str = '';
  while (1) {
    // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629
    u0 = u8Array[idx++];
    if (!u0) return str;
    if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }
    u1 = u8Array[idx++] & 63;
    if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }
    u2 = u8Array[idx++] & 63;
    if ((u0 & 0xF0) == 0xE0) {
      u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
    } else {
      u3 = u8Array[idx++] & 63;
      if ((u0 & 0xF8) == 0xF0) {
        u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3;
      } else {
        u4 = u8Array[idx++] & 63;
        if ((u0 & 0xFC) == 0xF8) {
          u0 = ((u0 & 3) << 24) | (u1 << 18) | (u2 << 12) | (u3 << 6) | u4;
        } else {
          u5 = u8Array[idx++] & 63;
          u0 = ((u0 & 1) << 30) | (u1 << 24) | (u2 << 18) | (u3 << 12) | (u4 << 6) | u5;
        }
      }
    }
    if (u0 < 0x10000) {
      str += String.fromCharCode(u0);
    } else {
      var ch = u0 - 0x10000;
      str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
    }
  }
}
Module["UTF8ArrayToString"] = UTF8ArrayToString;

// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns
// a copy of that string as a Javascript String object.

function UTF8ToString(ptr) {
  return UTF8ArrayToString(HEAPU8,ptr);
}
Module["UTF8ToString"] = UTF8ToString;

// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx',
// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP.
// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write.
// Parameters:
//   str: the Javascript string to copy.
//   outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element.
//   outIdx: The starting offset in the array to begin the copying.
//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null 
//                    terminator, i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else.
//                    maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator.
// Returns the number of bytes written, EXCLUDING the null terminator.

function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
  if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes.
    return 0;

  var startIdx = outIdx;
  var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator.
  for (var i = 0; i < str.length; ++i) {
    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
    // See http://unicode.org/faq/utf_bom.html#utf16-3
    // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629
    var u = str.charCodeAt(i); // possibly a lead surrogate
    if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
    if (u <= 0x7F) {
      if (outIdx >= endIdx) break;
      outU8Array[outIdx++] = u;
    } else if (u <= 0x7FF) {
      if (outIdx + 1 >= endIdx) break;
      outU8Array[outIdx++] = 0xC0 | (u >> 6);
      outU8Array[outIdx++] = 0x80 | (u & 63);
    } else if (u <= 0xFFFF) {
      if (outIdx + 2 >= endIdx) break;
      outU8Array[outIdx++] = 0xE0 | (u >> 12);
      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
      outU8Array[outIdx++] = 0x80 | (u & 63);
    } else if (u <= 0x1FFFFF) {
      if (outIdx + 3 >= endIdx) break;
      outU8Array[outIdx++] = 0xF0 | (u >> 18);
      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
      outU8Array[outIdx++] = 0x80 | (u & 63);
    } else if (u <= 0x3FFFFFF) {
      if (outIdx + 4 >= endIdx) break;
      outU8Array[outIdx++] = 0xF8 | (u >> 24);
      outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
      outU8Array[outIdx++] = 0x80 | (u & 63);
    } else {
      if (outIdx + 5 >= endIdx) break;
      outU8Array[outIdx++] = 0xFC | (u >> 30);
      outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63);
      outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63);
      outU8Array[outIdx++] = 0x80 | (u & 63);
    }
  }
  // Null-terminate the pointer to the buffer.
  outU8Array[outIdx] = 0;
  return outIdx - startIdx;
}
Module["stringToUTF8Array"] = stringToUTF8Array;

// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP.
// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write.
// Returns the number of bytes written, EXCLUDING the null terminator.

function stringToUTF8(str, outPtr, maxBytesToWrite) {
  assert(typeof maxBytesToWrite == 'number', 'stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  return stringToUTF8Array(str, HEAPU8,outPtr, maxBytesToWrite);
}
Module["stringToUTF8"] = stringToUTF8;

// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte.

function lengthBytesUTF8(str) {
  var len = 0;
  for (var i = 0; i < str.length; ++i) {
    // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8.
    // See http://unicode.org/faq/utf_bom.html#utf16-3
    var u = str.charCodeAt(i); // possibly a lead surrogate
    if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF);
    if (u <= 0x7F) {
      ++len;
    } else if (u <= 0x7FF) {
      len += 2;
    } else if (u <= 0xFFFF) {
      len += 3;
    } else if (u <= 0x1FFFFF) {
      len += 4;
    } else if (u <= 0x3FFFFFF) {
      len += 5;
    } else {
      len += 6;
    }
  }
  return len;
}
Module["lengthBytesUTF8"] = lengthBytesUTF8;

// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns
// a copy of that string as a Javascript String object.

function UTF16ToString(ptr) {
  var i = 0;

  var str = '';
  while (1) {
    var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
    if (codeUnit == 0)
      return str;
    ++i;
    // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
    str += String.fromCharCode(codeUnit);
  }
}
Module["UTF16ToString"] = UTF16ToString;

// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP.
// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write.
// Parameters:
//   str: the Javascript string to copy.
//   outPtr: Byte address in Emscripten HEAP where to write the string to.
//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null 
//                    terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else.
//                    maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator.
// Returns the number of bytes written, EXCLUDING the null terminator.

function stringToUTF16(str, outPtr, maxBytesToWrite) {
  assert(typeof maxBytesToWrite == 'number', 'stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
  if (maxBytesToWrite === undefined) {
    maxBytesToWrite = 0x7FFFFFFF;
  }
  if (maxBytesToWrite < 2) return 0;
  maxBytesToWrite -= 2; // Null terminator.
  var startPtr = outPtr;
  var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length;
  for (var i = 0; i < numCharsToWrite; ++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)>>1)]=codeUnit;
    outPtr += 2;
  }
  // Null-terminate the pointer to the HEAP.
  HEAP16[((outPtr)>>1)]=0;
  return outPtr - startPtr;
}
Module["stringToUTF16"] = stringToUTF16;

// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.

function lengthBytesUTF16(str) {
  return str.length*2;
}
Module["lengthBytesUTF16"] = lengthBytesUTF16;

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.
    // See http://unicode.org/faq/utf_bom.html#utf16-3
    if (utf32 >= 0x10000) {
      var ch = utf32 - 0x10000;
      str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
    } else {
      str += String.fromCharCode(utf32);
    }
  }
}
Module["UTF32ToString"] = UTF32ToString;

// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP.
// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write.
// Parameters:
//   str: the Javascript string to copy.
//   outPtr: Byte address in Emscripten HEAP where to write the string to.
//   maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null 
//                    terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else.
//                    maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator.
// Returns the number of bytes written, EXCLUDING the null terminator.

function stringToUTF32(str, outPtr, maxBytesToWrite) {
  assert(typeof maxBytesToWrite == 'number', 'stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!');
  // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
  if (maxBytesToWrite === undefined) {
    maxBytesToWrite = 0x7FFFFFFF;
  }
  if (maxBytesToWrite < 4) return 0;
  var startPtr = outPtr;
  var endPtr = startPtr + maxBytesToWrite - 4;
  for (var i = 0; i < str.length; ++i) {
    // 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.
    // See http://unicode.org/faq/utf_bom.html#utf16-3
    var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
    if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
      var trailSurrogate = str.charCodeAt(++i);
      codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
    }
    HEAP32[((outPtr)>>2)]=codeUnit;
    outPtr += 4;
    if (outPtr + 4 > endPtr) break;
  }
  // Null-terminate the pointer to the HEAP.
  HEAP32[((outPtr)>>2)]=0;
  return outPtr - startPtr;
}
Module["stringToUTF32"] = stringToUTF32;

// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte.

function lengthBytesUTF32(str) {
  var len = 0;
  for (var i = 0; i < str.length; ++i) {
    // 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.
    // See http://unicode.org/faq/utf_bom.html#utf16-3
    var codeUnit = str.charCodeAt(i);
    if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate.
    len += 4;
  }

  return len;
}
Module["lengthBytesUTF32"] = lengthBytesUTF32;

function demangle(func) {
  var hasLibcxxabi = !!Module['___cxa_demangle'];
  if (hasLibcxxabi) {
    try {
      var buf = _malloc(func.length);
      writeStringToMemory(func.substr(1), buf);
      var status = _malloc(4);
      var ret = Module['___cxa_demangle'](buf, 0, 0, status);
      if (getValue(status, 'i32') === 0 && ret) {
        return Pointer_stringify(ret);
      }
      // otherwise, libcxxabi failed, we can try ours which may return a partial result
    } catch(e) {
      // failure when using libcxxabi, we can try ours which may return a partial result
    } finally {
      if (buf) _free(buf);
      if (status) _free(status);
      if (ret) _free(ret);
    }
  }
  var i = 3;
  // params, etc.
  var basicTypes = {
    'v': 'void',
    'b': 'bool',
    'c': 'char',
    's': 'short',
    'i': 'int',
    'l': 'long',
    'f': 'float',
    'd': 'double',
    'w': 'wchar_t',
    'a': 'signed char',
    'h': 'unsigned char',
    't': 'unsigned short',
    'j': 'unsigned int',
    'm': 'unsigned long',
    'x': 'long long',
    'y': 'unsigned long long',
    'z': '...'
  };
  var subs = [];
  var first = true;
  function dump(x) {
    //return;
    if (x) Module.print(x);
    Module.print(func);
    var pre = '';
    for (var a = 0; a < i; a++) pre += ' ';
    Module.print (pre + '^');
  }
  function parseNested() {
    i++;
    if (func[i] === 'K') i++; // ignore const
    var parts = [];
    while (func[i] !== 'E') {
      if (func[i] === 'S') { // substitution
        i++;
        var next = func.indexOf('_', i);
        var num = func.substring(i, next) || 0;
        parts.push(subs[num] || '?');
        i = next+1;
        continue;
      }
      if (func[i] === 'C') { // constructor
        parts.push(parts[parts.length-1]);
        i += 2;
        continue;
      }
      var size = parseInt(func.substr(i));
      var pre = size.toString().length;
      if (!size || !pre) { i--; break; } // counter i++ below us
      var curr = func.substr(i + pre, size);
      parts.push(curr);
      subs.push(curr);
      i += pre + size;
    }
    i++; // skip E
    return parts;
  }
  function parse(rawList, limit, allowVoid) { // main parser
    limit = limit || Infinity;
    var ret = '', list = [];
    function flushList() {
      return '(' + list.join(', ') + ')';
    }
    var name;
    if (func[i] === 'N') {
      // namespaced N-E
      name = parseNested().join('::');
      limit--;
      if (limit === 0) return rawList ? [name] : name;
    } else {
      // not namespaced
      if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
      var size = parseInt(func.substr(i));
      if (size) {
        var pre = size.toString().length;
        name = func.substr(i + pre, size);
        i += pre + size;
      }
    }
    first = false;
    if (func[i] === 'I') {
      i++;
      var iList = parse(true);
      var iRet = parse(true, 1, true);
      ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
    } else {
      ret = name;
    }
    paramLoop: while (i < func.length && limit-- > 0) {
      //dump('paramLoop');
      var c = func[i++];
      if (c in basicTypes) {
        list.push(basicTypes[c]);
      } else {
        switch (c) {
          case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
          case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
          case 'L': { // literal
            i++; // skip basic type
            var end = func.indexOf('E', i);
            var size = end - i;
            list.push(func.substr(i, size));
            i += size + 2; // size + 'EE'
            break;
          }
          case 'A': { // array
            var size = parseInt(func.substr(i));
            i += size.toString().length;
            if (func[i] !== '_') throw '?';
            i++; // skip _
            list.push(parse(true, 1, true)[0] + ' [' + size + ']');
            break;
          }
          case 'E': break paramLoop;
          default: ret += '?' + c; break paramLoop;
        }
      }
    }
    if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
    if (rawList) {
      if (ret) {
        list.push(ret + '?');
      }
      return list;
    } else {
      return ret + flushList();
    }
  }
  var parsed = func;
  try {
    // Special-case the entry point, since its name differs from other name mangling.
    if (func == 'Object._main' || func == '_main') {
      return 'main()';
    }
    if (typeof func === 'number') func = Pointer_stringify(func);
    if (func[0] !== '_') return func;
    if (func[1] !== '_') return func; // C function
    if (func[2] !== 'Z') return func;
    switch (func[3]) {
      case 'n': return 'operator new()';
      case 'd': return 'operator delete()';
    }
    parsed = parse();
  } catch(e) {
    parsed += '?';
  }
  if (parsed.indexOf('?') >= 0 && !hasLibcxxabi) {
    Runtime.warnOnce('warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling');
  }
  return parsed;
}

function demangleAll(text) {
  return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
}

function jsStackTrace() {
  var err = new Error();
  if (!err.stack) {
    // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown,
    // so try that as a special-case.
    try {
      throw new Error(0);
    } catch(e) {
      err = e;
    }
    if (!err.stack) {
      return '(no stack trace available)';
    }
  }
  return err.stack.toString();
}

function stackTrace() {
  return demangleAll(jsStackTrace());
}
Module["stackTrace"] = stackTrace;

// Memory management

var PAGE_SIZE = 4096;

function alignMemoryPage(x) {
  if (x % 4096 > 0) {
    x += (4096 - (x % 4096));
  }
  return x;
}

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() {
  // TOTAL_MEMORY is the current size of the actual array, and DYNAMICTOP is the new top.
  assert(DYNAMICTOP >= TOTAL_MEMORY);
  assert(TOTAL_MEMORY > 4); // So the loop below will not be infinite

  var OLD_TOTAL_MEMORY = TOTAL_MEMORY;


  var LIMIT = Math.pow(2, 31); // 2GB is a practical maximum, as we use signed ints as pointers
                               // and JS engines seem unhappy to give us 2GB arrays currently
  if (DYNAMICTOP >= LIMIT) return false;

  while (TOTAL_MEMORY <= DYNAMICTOP) { // Simple heuristic.
    if (TOTAL_MEMORY < LIMIT/2) {
      TOTAL_MEMORY = alignMemoryPage(2*TOTAL_MEMORY); // double until 1GB
    } else {
      var last = TOTAL_MEMORY;
      TOTAL_MEMORY = alignMemoryPage((3*TOTAL_MEMORY + LIMIT)/4); // add smaller increments towards 2GB, which we cannot reach
      if (TOTAL_MEMORY <= last) return false;
    }
  }

  TOTAL_MEMORY = Math.max(TOTAL_MEMORY, 16*1024*1024);

  if (TOTAL_MEMORY >= LIMIT) return false;

  Module.printErr('Warning: Enlarging memory arrays, this is not fast! ' + [OLD_TOTAL_MEMORY, TOTAL_MEMORY]);


  var start = Date.now();

  try {
    if (ArrayBuffer.transfer) {
      buffer = ArrayBuffer.transfer(buffer, TOTAL_MEMORY);
    } else {
      var oldHEAP8 = HEAP8;
      buffer = new ArrayBuffer(TOTAL_MEMORY);
    }
  } catch(e) {
    return false;
  }

  var success = _emscripten_replace_memory(buffer);
  if (!success) return false;

  // everything worked

  Module['buffer'] = buffer;
  Module['HEAP8'] = HEAP8 = new Int8Array(buffer);
  Module['HEAP16'] = HEAP16 = new Int16Array(buffer);
  Module['HEAP32'] = HEAP32 = new Int32Array(buffer);
  Module['HEAPU8'] = HEAPU8 = new Uint8Array(buffer);
  Module['HEAPU16'] = HEAPU16 = new Uint16Array(buffer);
  Module['HEAPU32'] = HEAPU32 = new Uint32Array(buffer);
  Module['HEAPF32'] = HEAPF32 = new Float32Array(buffer);
  Module['HEAPF64'] = HEAPF64 = new Float64Array(buffer);
  if (!ArrayBuffer.transfer) {
    HEAP8.set(oldHEAP8);
  }

  Module.printErr('enlarged memory arrays from ' + OLD_TOTAL_MEMORY + ' to ' + TOTAL_MEMORY + ', took ' + (Date.now() - start) + ' ms (has ArrayBuffer.transfer? ' + (!!ArrayBuffer.transfer) + ')');

  return true;
}

var byteLength;
try {
  byteLength = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, 'byteLength').get);
  byteLength(new ArrayBuffer(4)); // can fail on older ie
} catch(e) { // can fail on older node/v8
  byteLength = function(buffer) { return buffer.byteLength; };
}

var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 268435456;

var totalMemory = 64*1024;
while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) {
  if (totalMemory < 16*1024*1024) {
    totalMemory *= 2;
  } else {
    totalMemory += 16*1024*1024
  }
}
totalMemory = Math.max(totalMemory, 16*1024*1024);
if (totalMemory !== TOTAL_MEMORY) {
  Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec (and given that TOTAL_STACK=' + TOTAL_STACK + ')');
  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;



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"] = addOnPreRun;

function addOnInit(cb) {
  __ATINIT__.unshift(cb);
}
Module["addOnInit"] = addOnInit;

function addOnPreMain(cb) {
  __ATMAIN__.unshift(cb);
}
Module["addOnPreMain"] = addOnPreMain;

function addOnExit(cb) {
  __ATEXIT__.unshift(cb);
}
Module["addOnExit"] = addOnExit;

function addOnPostRun(cb) {
  __ATPOSTRUN__.unshift(cb);
}
Module["addOnPostRun"] = addOnPostRun;

// Tools


function intArrayFromString(stringy, dontAddNull, length /* optional */) {
  var len = length > 0 ? length : lengthBytesUTF8(stringy)+1;
  var u8array = new Array(len);
  var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
  if (dontAddNull) u8array.length = numBytesWritten;
  return u8array;
}
Module["intArrayFromString"] = intArrayFromString;

function intArrayToString(array) {
  var ret = [];
  for (var i = 0; i < array.length; i++) {
    var chr = array[i];
    if (chr > 0xFF) {
      assert(false, 'Character code ' + chr + ' (' + String.fromCharCode(chr) + ')  at offset ' + i + ' not in 0x00-0xFF.');
      chr &= 0xFF;
    }
    ret.push(String.fromCharCode(chr));
  }
  return ret.join('');
}
Module["intArrayToString"] = intArrayToString;

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++)>>0)]=array[i];
  }
}
Module["writeArrayToMemory"] = writeArrayToMemory;

function writeAsciiToMemory(str, buffer, dontAddNull) {
  for (var i = 0; i < str.length; ++i) {
    assert(str.charCodeAt(i) === str.charCodeAt(i)&0xff);
    HEAP8[((buffer++)>>0)]=str.charCodeAt(i);
  }
  // Null-terminate the pointer to the HEAP.
  if (!dontAddNull) HEAP8[((buffer)>>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'];


if (!Math['clz32']) Math['clz32'] = function(x) {
  x = x >>> 0;
  for (var i = 0; i < 32; i++) {
    if (x & (1 << (31 - i))) return i;
  }
  return 32;
};
Math.clz32 = Math['clz32']

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;
var Math_clz32 = Math.clz32;

// A counter of dependencies for calling run(). If we need to
// do asynchronous work before running, increment this and
// decrement it. Incrementing must happen in a place like
// PRE_RUN_ADDITIONS (used by emcc to add file preloading).
// Note that you can add dependencies in preRun, even though
// it happens right before run - run will be postponed until
// the dependencies are met.
var runDependencies = 0;
var runDependencyWatcher = null;
var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
var runDependencyTracking = {};

function getUniqueRunDependency(id) {
  var orig = id;
  while (1) {
    if (!runDependencyTracking[id]) return id;
    id = orig + Math.random();
  }
  return id;
}

function addRunDependency(id) {
  runDependencies++;
  if (Module['monitorRunDependencies']) {
    Module['monitorRunDependencies'](runDependencies);
  }
  if (id) {
    assert(!runDependencyTracking[id]);
    runDependencyTracking[id] = 1;
    if (runDependencyWatcher === null && typeof setInterval !== 'undefined') {
      // Check for missing dependencies every few seconds
      runDependencyWatcher = setInterval(function() {
        if (ABORT) {
          clearInterval(runDependencyWatcher);
          runDependencyWatcher = null;
          return;
        }
        var shown = false;
        for (var dep in runDependencyTracking) {
          if (!shown) {
            shown = true;
            Module.printErr('still waiting on run dependencies:');
          }
          Module.printErr('dependency: ' + dep);
        }
        if (shown) {
          Module.printErr('(end of list)');
        }
      }, 10000);
    }
  } else {
    Module.printErr('warning: run dependency added without ID');
  }
}
Module["addRunDependency"] = addRunDependency;

function removeRunDependency(id) {
  runDependencies--;
  if (Module['monitorRunDependencies']) {
    Module['monitorRunDependencies'](runDependencies);
  }
  if (id) {
    assert(runDependencyTracking[id]);
    delete runDependencyTracking[id];
  } else {
    Module.printErr('warning: run dependency removed without ID');
  }
  if (runDependencies == 0) {
    if (runDependencyWatcher !== null) {
      clearInterval(runDependencyWatcher);
      runDependencyWatcher = null;
    }
    if (dependenciesFulfilled) {
      var callback = dependenciesFulfilled;
      dependenciesFulfilled = null;
      callback(); // can add another dependenciesFulfilled
    }
  }
}
Module["removeRunDependency"] = removeRunDependency;

Module["preloadedImages"] = {}; // maps url to image data
Module["preloadedAudios"] = {}; // maps url to audio data



var memoryInitializer = null;



// === Body ===

var ASM_CONSTS = [function($0, $1, $2, $3) { { if (!artoolkit["multiEachMarkerInfo"]) { artoolkit["multiEachMarkerInfo"] = ({}); } var multiEachMarker = artoolkit["multiEachMarkerInfo"]; multiEachMarker['visible'] = $0; multiEachMarker['pattId'] = $1; multiEachMarker['pattType'] = $2; multiEachMarker['width'] = $3; } },
 function($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32) { { var $a = arguments; var i = 12; if (!artoolkit["markerInfo"]) { artoolkit["markerInfo"] = ({ pos: [0,0], line: [[0,0,0], [0,0,0], [0,0,0], [0,0,0]], vertex: [[0,0], [0,0], [0,0], [0,0]] }); } var markerInfo = artoolkit["markerInfo"]; markerInfo["area"] = $0; markerInfo["id"] = $1; markerInfo["idPatt"] = $2; markerInfo["idMatrix"] = $3; markerInfo["dir"] = $4; markerInfo["dirPatt"] = $5; markerInfo["dirMatrix"] = $6; markerInfo["cf"] = $7; markerInfo["cfPatt"] = $8; markerInfo["cfMatrix"] = $9; markerInfo["pos"][0] = $10; markerInfo["pos"][1] = $11; markerInfo["line"][0][0] = $a[i++]; markerInfo["line"][0][1] = $a[i++]; markerInfo["line"][0][2] = $a[i++]; markerInfo["line"][1][0] = $a[i++]; markerInfo["line"][1][1] = $a[i++]; markerInfo["line"][1][2] = $a[i++]; markerInfo["line"][2][0] = $a[i++]; markerInfo["line"][2][1] = $a[i++]; markerInfo["line"][2][2] = $a[i++]; markerInfo["line"][3][0] = $a[i++]; markerInfo["line"][3][1] = $a[i++]; markerInfo["line"][3][2] = $a[i++]; markerInfo["vertex"][0][0] = $a[i++]; markerInfo["vertex"][0][1] = $a[i++]; markerInfo["vertex"][1][0] = $a[i++]; markerInfo["vertex"][1][1] = $a[i++]; markerInfo["vertex"][2][0] = $a[i++]; markerInfo["vertex"][2][1] = $a[i++]; markerInfo["vertex"][3][0] = $a[i++]; markerInfo["vertex"][3][1] = $a[i++]; markerInfo["errorCorrected"] = $a[i++]; } },
 function($0, $1, $2, $3, $4) { { if (!artoolkit["frameMalloc"]) { artoolkit["frameMalloc"] = ({}); } var frameMalloc = artoolkit["frameMalloc"]; frameMalloc["framepointer"] = $1; frameMalloc["framesize"] = $2; frameMalloc["camera"] = $3; frameMalloc["transform"] = $4; } }];

function _emscripten_asm_const_33(code, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32) {
 return ASM_CONSTS[code](a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32);
}

function _emscripten_asm_const_4(code, a0, a1, a2, a3) {
 return ASM_CONSTS[code](a0, a1, a2, a3);
}

function _emscripten_asm_const_5(code, a0, a1, a2, a3, a4) {
 return ASM_CONSTS[code](a0, a1, a2, a3, a4);
}



STATIC_BASE = 8;

STATICTOP = STATIC_BASE + 18336;
  /* global initializers */  __ATINIT__.push({ func: function() { __GLOBAL__sub_I_ARToolKitJS_cpp() } }, { func: function() { __GLOBAL__sub_I_bind_cpp() } });
  

/* memory initializer */ allocate([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,9,0,0,52,42,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,115,42,0,0,52,9,0,0,12,47,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,52,9,0,0,205,46,0,0,0,0,0,0,1,0,0,0,128,1,0,0,0,0,0,0,228,8,0,0,186,46,0,0,228,8,0,0,155,46,0,0,228,8,0,0,194,45,0,0,228,8,0,0,163,45,0,0,228,8,0,0,132,45,0,0,228,8,0,0,101,45,0,0,228,8,0,0,70,45,0,0,228,8,0,0,225,45,0,0,228,8,0,0,0,46,0,0,228,8,0,0,31,46,0,0,228,8,0,0,62,46,0,0,228,8,0,0,93,46,0,0,228,8,0,0,124,46,0,0,12,9,0,0,75,47,0,0,48,2,0,0,0,0,0,0,228,8,0,0,88,47,0,0,228,8,0,0,101,47,0,0,12,9,0,0,114,47,0,0,56,2,0,0,0,0,0,0,12,9,0,0,147,47,0,0,64,2,0,0,0,0,0,0,12,9,0,0,181,47,0,0,64,2,0,0,0,0,0,0,200,8,0,0,221,47,0,0,200,8,0,0,223,47,0,0,200,8,0,0,225,47,0,0,200,8,0,0,227,47,0,0,200,8,0,0,229,47,0,0,200,8,0,0,231,47,0,0,200,8,0,0,233,47,0,0,200,8,0,0,235,47,0,0,200,8,0,0,237,47,0,0,200,8,0,0,14,54,0,0,200,8,0,0,239,47,0,0,200,8,0,0,241,47,0,0,200,8,0,0,243,47,0,0,12,9,0,0,245,47,0,0,80,2,0,0,0,0,0,0,12,9,0,0,26,48,0,0,80,2,0,0,0,0,0,0,255,15,0,0,6,16,0,0,18,16,0,0,28,16,0,0,255,255,255,255,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,11,0,0,0,5,0,0,0,10,0,0,0,7,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,9,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,24,0,0,0,48,0,0,0,96,0,0,0,67,0,0,0,5,0,0,0,10,0,0,0,20,0,0,0,40,0,0,0,80,0,0,0,35,0,0,0,70,0,0,0,15,0,0,0,30,0,0,0,60,0,0,0,120,0,0,0,115,0,0,0,101,0,0,0,73,0,0,0,17,0,0,0,34,0,0,0,68,0,0,0,11,0,0,0,22,0,0,0,44,0,0,0,88,0,0,0,51,0,0,0,102,0,0,0,79,0,0,0,29,0,0,0,58,0,0,0,116,0,0,0,107,0,0,0,85,0,0,0,41,0,0,0,82,0,0,0,39,0,0,0,78,0,0,0,31,0,0,0,62,0,0,0,124,0,0,0,123,0,0,0,117,0,0,0,105,0,0,0,81,0,0,0,33,0,0,0,66,0,0,0,7,0,0,0,14,0,0,0,28,0,0,0,56,0,0,0,112,0,0,0,99,0,0,0,69,0,0,0,9,0,0,0,18,0,0,0,36,0,0,0,72,0,0,0,19,0,0,0,38,0,0,0,76,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,91,0,0,0,53,0,0,0,106,0,0,0,87,0,0,0,45,0,0,0,90,0,0,0,55,0,0,0,110,0,0,0,95,0,0,0,61,0,0,0,122,0,0,0,119,0,0,0,109,0,0,0,89,0,0,0,49,0,0,0,98,0,0,0,71,0,0,0,13,0,0,0,26,0,0,0,52,0,0,0,104,0,0,0,83,0,0,0,37,0,0,0,74,0,0,0,23,0,0,0,46,0,0,0,92,0,0,0,59,0,0,0,118,0,0,0,111,0,0,0,93,0,0,0,57,0,0,0,114,0,0,0,103,0,0,0,77,0,0,0,25,0,0,0,50,0,0,0,100,0,0,0,75,0,0,0,21,0,0,0,42,0,0,0,84,0,0,0,43,0,0,0,86,0,0,0,47,0,0,0,94,0,0,0,63,0,0,0,126,0,0,0,127,0,0,0,125,0,0,0,121,0,0,0,113,0,0,0,97,0,0,0,65,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,2,0,0,0,8,0,0,0,5,0,0,0,10,0,0,0,3,0,0,0,14,0,0,0,9,0,0,0,7,0,0,0,6,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,7,0,0,0,2,0,0,0,14,0,0,0,8,0,0,0,56,0,0,0,3,0,0,0,63,0,0,0,15,0,0,0,31,0,0,0,9,0,0,0,90,0,0,0,57,0,0,0,21,0,0,0,4,0,0,0,28,0,0,0,64,0,0,0,67,0,0,0,16,0,0,0,112,0,0,0,32,0,0,0,97,0,0,0,10,0,0,0,108,0,0,0,91,0,0,0,70,0,0,0,58,0,0,0,38,0,0,0,22,0,0,0,47,0,0,0,5,0,0,0,54,0,0,0,29,0,0,0,19,0,0,0,65,0,0,0,95,0,0,0,68,0,0,0,45,0,0,0,17,0,0,0,43,0,0,0,113,0,0,0,115,0,0,0,33,0,0,0,77,0,0,0,98,0,0,0,117,0,0,0,11,0,0,0,87,0,0,0,109,0,0,0,35,0,0,0,92,0,0,0,74,0,0,0,71,0,0,0,79,0,0,0,59,0,0,0,104,0,0,0,39,0,0,0,100,0,0,0,23,0,0,0,82,0,0,0,48,0,0,0,119,0,0,0,6,0,0,0,126,0,0,0,55,0,0,0,13,0,0,0,30,0,0,0,62,0,0,0,20,0,0,0,89,0,0,0,66,0,0,0,27,0,0,0,96,0,0,0,111,0,0,0,69,0,0,0,107,0,0,0,46,0,0,0,37,0,0,0,18,0,0,0,53,0,0,0,44,0,0,0,94,0,0,0,114,0,0,0,42,0,0,0,116,0,0,0,76,0,0,0,34,0,0,0,86,0,0,0,78,0,0,0,73,0,0,0,99,0,0,0,103,0,0,0,118,0,0,0,81,0,0,0,12,0,0,0,125,0,0,0,88,0,0,0,61,0,0,0,110,0,0,0,26,0,0,0,36,0,0,0,106,0,0,0,93,0,0,0,52,0,0,0,75,0,0,0,41,0,0,0,72,0,0,0,85,0,0,0,80,0,0,0,102,0,0,0,60,0,0,0,124,0,0,0,105,0,0,0,25,0,0,0,40,0,0,0,51,0,0,0,101,0,0,0,84,0,0,0,24,0,0,0,123,0,0,0,83,0,0,0,50,0,0,0,49,0,0,0,122,0,0,0,120,0,0,0,121,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,4,0,0,0,136,0,0,0,5,0,0,0,144,0,0,0,6,0,0,0,152,0,0,0,9,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,253,255,255,255,254,255,255,255,0,0,0,0,112,2,0,0,168,2,0,0,200,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,208,2,0,0,168,2,0,0,112,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,104,1,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,168,2,0,0,0,0,0,0,32,2,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,96,2,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,0,0,0,0,80,2,0,0,3,0,0,0,7,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,216,2,0,0,3,0,0,0,8,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,232,2,0,0,3,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,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,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,240,10,0,0,96,11,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,139,69,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,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,5,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,131,65,0,0,0,4,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,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,69,114,114,111,114,58,32,108,97,98,101,108,105,110,103,32,119,111,114,107,32,111,118,101,114,102,108,111,119,46,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,40,37,100,41,32,114,101,113,117,101,115,116,101,100,46,10,0,85,110,107,110,111,119,110,32,111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,108,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,114,101,113,117,101,115,116,101,100,46,32,83,101,116,32,116,111,32,109,97,110,117,97,108,46,10,0,76,97,98,101,108,105,110,103,32,116,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,46,10,0,77,65,78,85,65,76,0,65,85,84,79,95,77,69,68,73,65,78,0,65,85,84,79,95,79,84,83,85,0,65,85,84,79,95,65,68,65,80,84,73,86,69,65,85,84,79,95,66,82,65,67,75,69,84,73,78,71,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,109,97,114,107,101,114,32,99,111,117,110,116,115,32,45,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,32,91,37,51,100,58,32,37,51,100,93,43,46,10,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,98,114,97,99,107,101,116,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,109,101,100,105,97,110,0,79,116,115,117,0,65,117,116,111,32,116,104,114,101,115,104,111,108,100,32,40,37,115,41,32,97,100,106,117,115,116,101,100,32,116,104,114,101,115,104,111,108,100,32,116,111,32,37,100,46,10,0,63,63,63,32,49,10,0,63,63,63,32,50,10,0,63,63,63,32,51,10,0,69,114,114,111,114,58,32,85,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,32,112,97,115,115,101,100,32,116,111,32,97,114,73,109,97,103,101,80,114,111,99,72,105,115,116,40,41,46,10,0,0,0,0,1,0,1,1,1,0,2,4,255,255,5,3,1,0,2,255,6,7,255,3,1,2,2,3,2,3,2,3,3,0,255,4,6,7,5,255,1,4,5,4,4,5,5,4,5,7,6,6,6,7,7,7,6,255,2,4,6,7,5,3,255,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,1,1,0,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,255,255,3,255,5,6,255,255,9,10,255,12,255,255,15,255,17,18,255,20,255,255,23,24,255,255,27,255,29,30,255,255,1,2,255,4,255,255,7,8,255,255,11,255,13,14,255,16,255,255,19,255,21,22,255,255,25,26,255,28,255,255,31,69,114,114,111,114,58,32,117,110,115,117,112,112,111,114,116,101,100,32,112,105,120,101,108,32,102,111,114,109,97,116,46,10,0,69,114,114,111,114,58,32,78,85,76,76,32,112,97,116,116,72,97,110,100,108,101,46,10,0,69,114,114,111,114,58,32,99,97,110,39,116,32,108,111,97,100,32,112,97,116,116,101,114,110,32,102,114,111,109,32,78,85,76,76,32,98,117,102,102,101,114,46,10,0,69,114,114,111,114,58,32,111,117,116,32,111,102,32,109,101,109,111,114,121,46,10,0,32,9,10,13,0,80,97,116,116,101,114,110,32,68,97,116,97,32,114,101,97,100,32,101,114,114,111,114,33,33,10,0,69,114,114,111,114,32,111,112,101,110,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,114,101,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,39,37,115,39,46,10,0,114,98,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,115,32,102,105,108,101,32,34,37,115,34,32,102,111,114,32,114,101,97,100,105,110,103,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,102,105,108,101,32,108,101,110,103,116,104,46,0,69,114,114,111,114,58,32,115,117,112,112,108,105,101,100,32,102,105,108,101,32,100,111,101,115,32,110,111,116,32,97,112,112,101,97,114,32,116,111,32,98,101,32,97,110,32,65,82,84,111,111,108,75,105,116,32,99,97,109,101,114,97,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,46,10,0,69,114,114,111,114,32,40,37,100,41,58,32,117,110,97,98,108,101,32,116,111,32,114,101,97,100,32,102,114,111,109,32,102,105,108,101,46,0,69,114,114,111,114,58,32,105,99,112,71,101,116,74,95,85,95,88,99,0,69,114,114,111,114,58,32,109,97,108,108,111,99,10,0,69,114,114,111,114,32,49,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,50,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,51,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,52,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,53,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,54,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,69,114,114,111,114,32,55,58,32,105,99,112,71,101,116,73,110,105,116,88,119,50,88,99,10,0,114,0,69,114,114,111,114,58,32,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,46,10,0,37,115,37,115,10,0,37,100,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,110,117,109,98,101,114,32,111,102,32,109,97,114,107,101,114,32,99,111,110,102,105,103,115,32,116,111,32,114,101,97,100,46,10,0,79,117,116,32,111,102,32,109,101,109,111,114,121,33,33,10,0,37,108,108,117,37,99,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,112,97,116,116,101,114,110,32,39,37,115,39,32,115,112,101,99,105,102,105,101,100,32,105,110,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,117,114,97,116,105,111,110,32,119,104,105,108,101,32,105,110,32,98,97,114,99,111,100,101,45,111,110,108,121,32,109,111,100,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,100,101,116,101,114,109,105,110,101,32,100,105,114,101,99,116,111,114,121,32,110,97,109,101,46,10,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,58,32,85,110,97,98,108,101,32,116,111,32,108,111,97,100,32,112,97,116,116,101,114,110,32,39,37,115,39,46,10,0,37,108,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,70,105,114,115,116,32,108,105,110,101,32,109,117,115,116,32,98,101,32,112,97,116,116,101,114,110,32,119,105,100,116,104,46,10,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,37,102,32,37,102,0,69,114,114,111,114,32,112,114,111,99,101,115,115,105,110,103,32,109,117,108,116,105,109,97,114,107,101,114,32,99,111,110,102,105,103,32,102,105,108,101,32,39,37,115,39,44,32,109,97,114,107,101,114,32,100,101,102,105,110,105,116,105,111,110,32,37,51,100,58,32,76,105,110,101,115,32,50,32,45,32,52,32,109,117,115,116,32,98,101,32,109,97,114,107,101,114,32,116,114,97,110,115,102,111,114,109,46,10,0,97,114,103,108,67,97,109,101,114,97,70,114,117,115,116,117,109,40,41,58,32,97,114,80,97,114,97,109,68,101,99,111,109,112,77,97,116,40,41,32,105,110,100,105,99,97,116,101,100,32,112,97,114,97,109,101,116,101,114,32,101,114,114,111,114,46,10,0,108,111,97,100,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,114,97,109,101,116,101,114,32,102,105,108,101,32,37,115,32,102,111,114,32,99,97,109,101,114,97,46,10,0,42,42,42,32,67,97,109,101,114,97,32,80,97,114,97,109,101,116,101,114,32,114,101,115,105,122,101,100,32,102,114,111,109,32,37,100,44,32,37,100,46,32,42,42,42,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,114,97,109,76,84,67,114,101,97,116,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,58,32,97,114,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,115,101,116,67,97,109,101,114,97,40,41,58,32,69,114,114,111,114,32,99,114,101,97,116,105,110,103,32,51,68,32,104,97,110,100,108,101,0,108,111,97,100,77,97,114,107,101,114,40,41,58,32,69,114,114,111,114,32,108,111,97,100,105,110,103,32,112,97,116,116,101,114,110,32,102,105,108,101,32,37,115,46,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,97,114,107,101,114,46,10,0,99,111,110,102,105,103,32,100,97,116,97,32,108,111,97,100,32,101,114,114,111,114,32,33,33,10,0,65,82,84,111,111,108,75,105,116,74,83,40,41,58,32,85,110,97,98,108,101,32,116,111,32,115,101,116,32,117,112,32,65,82,32,109,117,108,116,105,109,97,114,107,101,114,46,10,0,80,97,116,116,101,114,110,32,100,101,116,101,99,116,105,111,110,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,80,97,116,116,101,114,110,32,114,97,116,105,111,32,115,105,122,101,32,115,101,116,32,116,111,32,37,102,46,10,0,76,97,98,101,108,105,110,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,115,101,116,32,116,111,32,37,100,10,0,84,104,114,101,115,104,111,108,100,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,10,0,111,110,46,0,111,102,102,46,0,68,101,98,117,103,32,109,111,100,101,32,115,101,116,32,116,111,32,37,115,10,0,73,109,97,103,101,32,112,114,111,99,46,32,109,111,100,101,32,115,101,116,32,116,111,32,37,100,46,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,73,110,102,111,34,93,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,118,105,115,105,98,108,101,39,93,32,61,32,36,48,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,73,100,39,93,32,61,32,36,49,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,112,97,116,116,84,121,112,101,39,93,32,61,32,36,50,59,32,109,117,108,116,105,69,97,99,104,77,97,114,107,101,114,91,39,119,105,100,116,104,39,93,32,61,32,36,51,59,32,125,0,123,32,118,97,114,32,36,97,32,61,32,97,114,103,117,109,101,110,116,115,59,32,118,97,114,32,105,32,61,32,49,50,59,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,32,61,32,40,123,32,112,111,115,58,32,91,48,44,48,93,44,32,108,105,110,101,58,32,91,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,44,32,91,48,44,48,44,48,93,93,44,32,118,101,114,116,101,120,58,32,91,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,44,32,91,48,44,48,93,93,32,125,41,59,32,125,32,118,97,114,32,109,97,114,107,101,114,73,110,102,111,32,61,32,97,114,116,111,111,108,107,105,116,91,34,109,97,114,107,101,114,73,110,102,111,34,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,97,114,101,97,34,93,32,61,32,36,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,34,93,32,61,32,36,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,80,97,116,116,34,93,32,61,32,36,50,59,32,109,97,114,107,101,114,73,110,102,111,91,34,105,100,77,97,116,114,105,120,34,93,32,61,32,36,51,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,34,93,32,61,32,36,52,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,80,97,116,116,34,93,32,61,32,36,53,59,32,109,97,114,107,101,114,73,110,102,111,91,34,100,105,114,77,97,116,114,105,120,34,93,32,61,32,36,54,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,34,93,32,61,32,36,55,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,80,97,116,116,34,93,32,61,32,36,56,59,32,109,97,114,107,101,114,73,110,102,111,91,34,99,102,77,97,116,114,105,120,34,93,32,61,32,36,57,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,48,93,32,61,32,36,49,48,59,32,109,97,114,107,101,114,73,110,102,111,91,34,112,111,115,34,93,91,49,93,32,61,32,36,49,49,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,48,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,49,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,50,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,108,105,110,101,34,93,91,51,93,91,50,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,48,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,49,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,50,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,48,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,118,101,114,116,101,120,34,93,91,51,93,91,49,93,32,61,32,36,97,91,105,43,43,93,59,32,109,97,114,107,101,114,73,110,102,111,91,34,101,114,114,111,114,67,111,114,114,101,99,116,101,100,34,93,32,61,32,36,97,91,105,43,43,93,59,32,125,0,115,101,116,117,112,40,41,58,32,69,114,114,111,114,58,32,97,114,80,97,116,116,67,114,101,97,116,101,72,97,110,100,108,101,46,10,0,65,108,108,111,99,97,116,101,100,32,118,105,100,101,111,70,114,97,109,101,83,105,122,101,32,37,100,10,0,123,32,105,102,32,40,33,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,41,32,123,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,32,61,32,40,123,125,41,59,32,125,32,118,97,114,32,102,114,97,109,101,77,97,108,108,111,99,32,61,32,97,114,116,111,111,108,107,105,116,91,34,102,114,97,109,101,77,97,108,108,111,99,34,93,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,112,111,105,110,116,101,114,34,93,32,61,32,36,49,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,102,114,97,109,101,115,105,122,101,34,93,32,61,32,36,50,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,99,97,109,101,114,97,34,93,32,61,32,36,51,59,32,102,114,97,109,101,77,97,108,108,111,99,91,34,116,114,97,110,115,102,111,114,109,34,93,32,61,32,36,52,59,32,125,0,115,101,116,117,112,0,116,101,97,114,100,111,119,110,0,95,97,100,100,77,97,114,107,101,114,0,95,97,100,100,77,117,108,116,105,77,97,114,107,101,114,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,77,97,114,107,101,114,67,111,117,110,116,0,95,108,111,97,100,67,97,109,101,114,97,0,115,101,116,77,97,114,107,101,114,73,110,102,111,68,105,114,0,115,101,116,77,97,114,107,101,114,73,110,102,111,86,101,114,116,101,120,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,83,113,117,97,114,101,67,111,110,116,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,0,103,101,116,84,114,97,110,115,77,97,116,77,117,108,116,105,83,113,117,97,114,101,82,111,98,117,115,116,0,100,101,116,101,99,116,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,78,117,109,0,103,101,116,77,117,108,116,105,69,97,99,104,77,97,114,107,101,114,0,103,101,116,77,97,114,107,101,114,0,115,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,68,101,98,117,103,77,111,100,101,0,103,101,116,80,114,111,99,101,115,115,105,110,103,73,109,97,103,101,0,115,101,116,76,111,103,76,101,118,101,108,0,103,101,116,76,111,103,76,101,118,101,108,0,115,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,78,101,97,114,80,108,97,110,101,0,115,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,103,101,116,80,114,111,106,101,99,116,105,111,110,70,97,114,80,108,97,110,101,0,115,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,103,101,116,84,104,114,101,115,104,111,108,100,77,111,100,101,0,115,101,116,84,104,114,101,115,104,111,108,100,0,103,101,116,84,104,114,101,115,104,111,108,100,0,115,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,103,101,116,80,97,116,116,101,114,110,68,101,116,101,99,116,105,111,110,77,111,100,101,0,115,101,116,80,97,116,116,82,97,116,105,111,0,103,101,116,80,97,116,116,82,97,116,105,111,0,115,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,103,101,116,77,97,116,114,105,120,67,111,100,101,84,121,112,101,0,115,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,103,101,116,76,97,98,101,108,105,110,103,77,111,100,101,0,115,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,103,101,116,73,109,97,103,101,80,114,111,99,77,111,100,101,0,69,82,82,79,82,95,65,82,67,79,78,84,82,79,76,76,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,85,76,84,73,77,65,82,75,69,82,95,78,79,84,95,70,79,85,78,68,0,69,82,82,79,82,95,77,65,82,75,69,82,95,73,78,68,69,88,95,79,85,84,95,79,70,95,66,79,85,78,68,83,0,65,82,95,68,69,66,85,71,95,68,73,83,65,66,76,69,0,65,82,95,68,69,66,85,71,95,69,78,65,66,76,69,0,65,82,95,68,69,70,65,85,76,84,95,68,69,66,85,71,95,77,79,68,69,0,65,82,95,76,65,66,69,76,73,78,71,95,87,72,73,84,69,95,82,69,71,73,79,78,0,65,82,95,76,65,66,69,76,73,78,71,95,66,76,65,67,75,95,82,69,71,73,79,78,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,77,79,68,69,0,65,82,95,68,69,70,65,85,76,84,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,82,65,77,69,95,73,77,65,71,69,0,65,82,95,73,77,65,71,69,95,80,82,79,67,95,70,73,69,76,68,95,73,77,65,71,69,0,65,82,95,68,69,70,65,85,76,84,95,73,77,65,71,69,95,80,82,79,67,95,77,79,68,69,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,68,69,84,69,67,84,73,79,78,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,67,79,76,79,82,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,84,69,77,80,76,65,84,69,95,77,65,84,67,72,73,78,71,95,77,79,78,79,95,65,78,68,95,77,65,84,82,73,88,0,65,82,95,68,69,70,65,85,76,84,95,80,65,84,84,69,82,78,95,68,69,84,69,67,84,73,79,78,95,77,79,68,69,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,78,79,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,0,65,82,95,85,83,69,95,84,82,65,67,75,73,78,71,95,72,73,83,84,79,82,89,95,86,50,0,65,82,95,68,69,70,65,85,76,84,95,77,65,82,75,69,82,95,69,88,84,82,65,67,84,73,79,78,95,77,79,68,69,0,65,82,95,77,65,88,95,76,79,79,80,95,67,79,85,78,84,0,65,82,95,76,79,79,80,95,66,82,69,65,75,95,84,72,82,69,83,72,0,65,82,95,76,79,71,95,76,69,86,69,76,95,68,69,66,85,71,0,65,82,95,76,79,71,95,76,69,86,69,76,95,73,78,70,79,0,65,82,95,76,79,71,95,76,69,86,69,76,95,87,65,82,78,0,65,82,95,76,79,71,95,76,69,86,69,76,95,69,82,82,79,82,0,65,82,95,76,79,71,95,76,69,86,69,76,95,82,69,76,95,73,78,70,79,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,72,65,77,77,73,78,71,54,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,51,120,51,95,80,65,82,73,84,89,54,53,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,57,95,51,0,65,82,95,77,65,84,82,73,88,95,67,79,68,69,95,52,120,52,95,66,67,72,95,49,51,95,53,95,53,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,77,65,78,85,65,76,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,77,69,68,73,65,78,0,65,82,95,76,65,66], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
/* memory initializer */ allocate([69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,79,84,83,85,0,65,82,95,76,65,66,69,76,73,78,71,95,84,72,82,69,83,72,95,77,79,68,69,95,65,85,84,79,95,65,68,65,80,84,73,86,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,78,79,78,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,65,84,84,69,82,78,95,69,88,84,82,65,67,84,73,79,78,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,71,69,78,69,82,73,67,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,84,82,65,83,84,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,78,79,84,95,70,79,85,78,68,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,66,65,82,67,79,68,69,95,69,68,67,95,70,65,73,76,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,77,65,84,67,72,95,67,79,78,70,73,68,69,78,67,69,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,80,79,83,69,95,69,82,82,79,82,95,77,85,76,84,73,0,65,82,95,77,65,82,75,69,82,95,73,78,70,79,95,67,85,84,79,70,70,95,80,72,65,83,69,95,72,69,85,82,73,83,84,73,67,95,84,82,79,85,66,76,69,83,79,77,69,95,77,65,84,82,73,88,95,67,79,68,69,83,0,118,105,105,102,0,118,105,105,105,0,100,105,105,0,118,105,105,100,0,105,105,0,118,105,105,0,105,105,105,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,99,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,99,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,99,69,69,69,69,0,78,83,116,51,95,95,49,50,49,95,95,98,97,115,105,99,95,115,116,114,105,110,103,95,99,111,109,109,111,110,73,76,98,49,69,69,69,0,105,105,105,105,0,105,105,105,105,105,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,115,116,100,58,58,119,115,116,114,105,110,103,0,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,99,104,97,114,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,115,104,111,114,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,105,110,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,110,115,105,103,110,101,100,32,108,111,110,103,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,56,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,49,54,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,117,105,110,116,51,50,95,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,102,108,111,97,116,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,100,111,117,98,108,101,62,0,101,109,115,99,114,105,112,116,101,110,58,58,109,101,109,111,114,121,95,118,105,101,119,60,108,111,110,103,32,100,111,117,98,108,101,62,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,101,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,100,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,102,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,109,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,108,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,106,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,105,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,116,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,115,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,104,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,97,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,49,49,109,101,109,111,114,121,95,118,105,101,119,73,99,69,69,0,78,49,48,101,109,115,99,114,105,112,116,101,110,51,118,97,108,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,119,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,119,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,119,69,69,69,69,0,78,83,116,51,95,95,49,49,50,98,97,115,105,99,95,115,116,114,105,110,103,73,104,78,83,95,49,49,99,104,97,114,95,116,114,97,105,116,115,73,104,69,69,78,83,95,57,97,108,108,111,99,97,116,111,114,73,104,69,69,69,69,0,83,116,57,98,97,100,95,97,108,108,111,99,0,83,116,57,101,120,99,101,112,116,105,111,110,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,51,95,95,102,117,110,100,97,109,101,110,116,97,108,95,116,121,112,101,95,105,110,102,111,69,0,118,0,98,0,99,0,104,0,97,0,115,0,116,0,105,0,106,0,109,0,102,0,100,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,85,115,101,114,115,47,106,101,114,111,109,101,101,116,105,101,110,110,101,47,119,111,114,107,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,49,46,51,53,46,48,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,32,40,0,41,0,95,98,108,111,99,107,95,105,110,118,111,107,101,0,105,110,118,111,99,97,116,105,111,110,32,102,117,110,99,116,105,111,110,32,102,111,114,32,98,108,111,99,107,32,105,110,32,0,32,99,111,110,115,116,0,32,118,111,108,97,116,105,108,101,0,32,114,101,115,116,114,105,99,116,0,32,91,0,32,91,93,0,93,0,32,99,111,109,112,108,101,120,0,40,0,44,32,0,32,38,0,32,38,38,0,32,0,32,105,109,97,103,105,110,97,114,121,0,58,58,42,0,38,38,0,111,98,106,99,95,111,98,106,101,99,116,60,0,42,0,105,100,0,38,0,111,98,106,99,112,114,111,116,111,0,60,0,62,0,32,118,101,99,116,111,114,91,0,112,105,120,101,108,32,118,101,99,116,111,114,91,0,100,101,99,108,116,121,112,101,40,0,115,116,100,58,58,97,108,108,111,99,97,116,111,114,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,115,116,114,105,110,103,0,115,116,100,58,58,105,115,116,114,101,97,109,0,115,116,100,58,58,111,115,116,114,101,97,109,0,115,116,100,58,58,105,111,115,116,114,101,97,109,0,115,116,100,0,58,58,0,58,58,115,116,114,105,110,103,32,108,105,116,101,114,97,108,0,115,116,100,58,58,0,126,0,39,117,110,110,97,109,101,100,0,39,108,97,109,98,100,97,39,40,0,111,112,101,114,97,116,111,114,38,38,0,111,112,101,114,97,116,111,114,38,0,111,112,101,114,97,116,111,114,38,61,0,111,112,101,114,97,116,111,114,61,0,111,112,101,114,97,116,111,114,40,41,0,111,112,101,114,97,116,111,114,44,0,111,112,101,114,97,116,111,114,126,0,111,112,101,114,97,116,111,114,32,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,91,93,0,111,112,101,114,97,116,111,114,42,0,111,112,101,114,97,116,111,114,32,100,101,108,101,116,101,0,111,112,101,114,97,116,111,114,47,0,111,112,101,114,97,116,111,114,47,61,0,111,112,101,114,97,116,111,114,94,0,111,112,101,114,97,116,111,114,94,61,0,111,112,101,114,97,116,111,114,61,61,0,111,112,101,114,97,116,111,114,62,61,0,111,112,101,114,97,116,111,114,62,0,111,112,101,114,97,116,111,114,91,93,0,111,112,101,114,97,116,111,114,60,61,0,111,112,101,114,97,116,111,114,34,34,32,0,111,112,101,114,97,116,111,114,60,60,0,111,112,101,114,97,116,111,114,60,60,61,0,111,112,101,114,97,116,111,114,60,0,111,112,101,114,97,116,111,114,45,0,111,112,101,114,97,116,111,114,45,61,0,111,112,101,114,97,116,111,114,42,61,0,111,112,101,114,97,116,111,114,45,45,0,111,112,101,114,97,116,111,114,32,110,101,119,91,93,0,111,112,101,114,97,116,111,114,33,61,0,111,112,101,114,97,116,111,114,33,0,111,112,101,114,97,116,111,114,32,110,101,119,0,111,112,101,114,97,116,111,114,124,124,0,111,112,101,114,97,116,111,114,124,0,111,112,101,114,97,116,111,114,124,61,0,111,112,101,114,97,116,111,114,45,62,42,0,111,112,101,114,97,116,111,114,43,0,111,112,101,114,97,116,111,114,43,61,0,111,112,101,114,97,116,111,114,43,43,0,111,112,101,114,97,116,111,114,45,62,0,111,112,101,114,97,116,111,114,63,0,111,112,101,114,97,116,111,114,37,0,111,112,101,114,97,116,111,114,37,61,0,111,112,101,114,97,116,111,114,62,62,0,111,112,101,114,97,116,111,114,62,62,61,0,115,116,100,58,58,98,97,115,105,99,95,115,116,114,105,110,103,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,44,32,115,116,100,58,58,97,108,108,111,99,97,116,111,114,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,115,116,114,105,110,103,0,115,116,100,58,58,98,97,115,105,99,95,105,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,111,115,116,114,101,97,109,0,115,116,100,58,58,98,97,115,105,99,95,105,111,115,116,114,101,97,109,60,99,104,97,114,44,32,115,116,100,58,58,99,104,97,114,95,116,114,97,105,116,115,60,99,104,97,114,62,32,62,0,98,97,115,105,99,95,105,111,115,116,114,101,97,109,0,95,71,76,79,66,65,76,95,95,78,0,40,97,110,111,110,121,109,111,117,115,32,110,97,109,101,115,112,97,99,101,41,0,32,62,0,119,99,104,97,114,95,116,0,102,97,108,115,101,0,116,114,117,101,0,99,104,97,114,0,115,105,103,110,101,100,32,99,104,97,114,0,117,110,115,105,103,110,101,100,32,99,104,97,114,0,115,104,111,114,116,0,117,110,115,105,103,110,101,100,32,115,104,111,114,116,0,0,117,0,108,0,117,108,0,108,108,0,117,108,108,0,95,95,105,110,116,49,50,56,0,117,110,115,105,103,110,101,100,32,95,95,105,110,116,49,50,56,0,37,97,102,0,37,97,0,37,76,97,76,0,38,61,0,61,0,97,108,105,103,110,111,102,32,40,0,99,111,110,115,116,95,99,97,115,116,60,0,62,40,0,44,0,41,40,0,100,101,108,101,116,101,91,93,32,0,100,121,110,97,109,105,99,95,99,97,115,116,60,0,100,101,108,101,116,101,32,0,46,42,0,47,0,47,61,0,94,0,94,61,0,61,61,0,62,61,0,41,91,0,60,61,0,60,60,0,60,60,61,0,45,0,45,61,0,42,61,0,45,45,0,41,45,45,0,91,93,32,0,41,32,0,33,61,0,33,0,110,111,101,120,99,101,112,116,32,40,0,124,124,0,124,0,124,61,0,45,62,42,0,43,0,43,61,0,43,43,0,41,43,43,0,45,62,0,41,32,63,32,40,0,41,32,58,32,40,0,114,101,105,110,116,101,114,112,114,101,116,95,99,97,115,116,60,0,37,0,37,61,0,62,62,0,62,62,61,0,115,116,97,116,105,99,95,99,97,115,116,60,0,115,105,122,101,111,102,32,40,0,115,105,122,101,111,102,46,46,46,40,0,116,121,112,101,105,100,40,0,116,104,114,111,119,0,116,104,114,111,119,32,0,102,112,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,118,111,105,100,0,98,111,111,108,0,105,110,116,0,117,110,115,105,103,110,101,100,32,105,110,116,0,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,0,108,111,110,103,32,108,111,110,103,0,117,110,115,105,103,110,101,100,32,108,111,110,103,32,108,111,110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,108,111,110,103,32,100,111,117,98,108,101,0,95,95,102,108,111,97,116,49,50,56,0,46,46,46,0,100,101,99,105,109,97,108,54,52,0,100,101,99,105,109,97,108,49,50,56,0,100,101,99,105,109,97,108,51,50,0,100,101,99,105,109,97,108,49,54,0,99,104,97,114,51,50,95,116,0,99,104,97,114,49,54,95,116,0,97,117,116,111,0,115,116,100,58,58,110,117,108,108,112,116,114,95,116,0,118,116,97,98,108,101,32,102,111,114,32,0,86,84,84,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,102,111,114,32,0,116,121,112,101,105,110,102,111,32,110,97,109,101,32,102,111,114,32,0,99,111,118,97,114,105,97,110,116,32,114,101,116,117,114,110,32,116,104,117,110,107,32,116,111,32,0,99,111,110,115,116,114,117,99,116,105,111,110,32,118,116,97,98,108,101,32,102,111,114,32,0,45,105,110,45,0,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,110,111,110,45,118,105,114,116,117,97,108,32,116,104,117,110,107,32,116,111,32,0,103,117,97,114,100,32,118,97,114,105,97,98,108,101,32,102,111,114,32,0,114,101,102,101,114,101,110,99,101,32,116,101,109,112,111,114,97,114,121,32,102,111,114,32,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,114,119,97], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
/* memory initializer */ allocate([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,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+17795);





/* no memory initializer */
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];

}

// {{PRE_LIBRARY}}


  
  function _atexit(func, arg) {
      __ATEXIT__.unshift({ func: func, arg: arg });
    }function ___cxa_atexit() {
  return _atexit.apply(null, arguments)
  }

   
  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();
    }

  
  
  
  function embind_init_charCodes() {
      var codes = new Array(256);
      for (var i = 0; i < 256; ++i) {
          codes[i] = String.fromCharCode(i);
      }
      embind_charCodes = codes;
    }var embind_charCodes=undefined;function readLatin1String(ptr) {
      var ret = "";
      var c = ptr;
      while (HEAPU8[c]) {
          ret += embind_charCodes[HEAPU8[c++]];
      }
      return ret;
    }
  
  
  var awaitingDependencies={};
  
  var registeredTypes={};
  
  var typeDependencies={};
  
  
  
  
  
  
  var char_0=48;
  
  var char_9=57;function makeLegalFunctionName(name) {
      if (undefined === name) {
          return '_unknown';
      }
      name = name.replace(/[^a-zA-Z0-9_]/g, '$');
      var f = name.charCodeAt(0);
      if (f >= char_0 && f <= char_9) {
          return '_' + name;
      } else {
          return name;
      }
    }function createNamedFunction(name, body) {
      name = makeLegalFunctionName(name);
      /*jshint evil:true*/
      return new Function(
          "body",
          "return function " + name + "() {\n" +
          "    \"use strict\";" +
          "    return body.apply(this, arguments);\n" +
          "};\n"
      )(body);
    }function extendError(baseErrorType, errorName) {
      var errorClass = createNamedFunction(errorName, function(message) {
          this.name = errorName;
          this.message = message;
  
          var stack = (new Error(message)).stack;
          if (stack !== undefined) {
              this.stack = this.toString() + '\n' +
                  stack.replace(/^Error(:[^\n]*)?\n/, '');
          }
      });
      errorClass.prototype = Object.create(baseErrorType.prototype);
      errorClass.prototype.constructor = errorClass;
      errorClass.prototype.toString = function() {
          if (this.message === undefined) {
              return this.name;
          } else {
              return this.name + ': ' + this.message;
          }
      };
  
      return errorClass;
    }var BindingError=undefined;function throwBindingError(message) {
      throw new BindingError(message);
    }
  
  
  
  var InternalError=undefined;function throwInternalError(message) {
      throw new InternalError(message);
    }function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) {
      myTypes.forEach(function(type) {
          typeDependencies[type] = dependentTypes;
      });
  
      function onComplete(typeConverters) {
          var myTypeConverters = getTypeConverters(typeConverters);
          if (myTypeConverters.length !== myTypes.length) {
              throwInternalError('Mismatched type converter count');
          }
          for (var i = 0; i < myTypes.length; ++i) {
              registerType(myTypes[i], myTypeConverters[i]);
          }
      }
  
      var typeConverters = new Array(dependentTypes.length);
      var unregisteredTypes = [];
      var registered = 0;
      dependentTypes.forEach(function(dt, i) {
          if (registeredTypes.hasOwnProperty(dt)) {
              typeConverters[i] = registeredTypes[dt];
          } else {
              unregisteredTypes.push(dt);
              if (!awaitingDependencies.hasOwnProperty(dt)) {
                  awaitingDependencies[dt] = [];
              }
              awaitingDependencies[dt].push(function() {
                  typeConverters[i] = registeredTypes[dt];
                  ++registered;
                  if (registered === unregisteredTypes.length) {
                      onComplete(typeConverters);
                  }
              });
          }
      });
      if (0 === unregisteredTypes.length) {
          onComplete(typeConverters);
      }
    }function registerType(rawType, registeredInstance, options) {
      options = options || {};
  
      if (!('argPackAdvance' in registeredInstance)) {
          throw new TypeError('registerType registeredInstance requires argPackAdvance');
      }
  
      var name = registeredInstance.name;
      if (!rawType) {
          throwBindingError('type "' + name + '" must have a positive integer typeid pointer');
      }
      if (registeredTypes.hasOwnProperty(rawType)) {
          if (options.ignoreDuplicateRegistrations) {
              return;
          } else {
              throwBindingError("Cannot register type '" + name + "' twice");
          }
      }
  
      registeredTypes[rawType] = registeredInstance;
      delete typeDependencies[rawType];
  
      if (awaitingDependencies.hasOwnProperty(rawType)) {
          var callbacks = awaitingDependencies[rawType];
          delete awaitingDependencies[rawType];
          callbacks.forEach(function(cb) {
              cb();
          });
      }
    }function __embind_register_void(rawType, name) {
      name = readLatin1String(name);
      registerType(rawType, {
          isVoid: true, // void return values can be optimized out sometimes
          name: name,
          'argPackAdvance': 0,
          'fromWireType': function() {
              return undefined;
          },
          'toWireType': function(destructors, o) {
              // TODO: assert if anything else is given?
              return undefined;
          },
      });
    }

  
  function __ZSt18uncaught_exceptionv() { // std::uncaught_exception()
      return !!__ZSt18uncaught_exceptionv.uncaught_exception;
    }
  
  
  
  var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:function (adjusted) {
        if (!adjusted || EXCEPTIONS.infos[adjusted]) return adjusted;
        for (var ptr in EXCEPTIONS.infos) {
          var info = EXCEPTIONS.infos[ptr];
          if (info.adjusted === adjusted) {
            return ptr;
          }
        }
        return adjusted;
      },addRef:function (ptr) {
        if (!ptr) return;
        var info = EXCEPTIONS.infos[ptr];
        info.refcount++;
      },decRef:function (ptr) {
        if (!ptr) return;
        var info = EXCEPTIONS.infos[ptr];
        assert(info.refcount > 0);
        info.refcount--;
        if (info.refcount === 0) {
          if (info.destructor) {
            Runtime.dynCall('vi', info.destructor, [ptr]);
          }
          delete EXCEPTIONS.infos[ptr];
          ___cxa_free_exception(ptr);
        }
      },clearRef:function (ptr) {
        if (!ptr) return;
        var info = EXCEPTIONS.infos[ptr];
        info.refcount = 0;
      }};
  function ___resumeException(ptr) {
      if (!EXCEPTIONS.last) { EXCEPTIONS.last = ptr; }
      EXCEPTIONS.clearRef(EXCEPTIONS.deAdjust(ptr)); // exception refcount should be cleared, but don't free it
      throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
    }function ___cxa_find_matching_catch() {
      var thrown = EXCEPTIONS.last;
      if (!thrown) {
        // just pass through the null ptr
        return ((asm["setTempRet0"](0),0)|0);
      }
      var info = EXCEPTIONS.infos[thrown];
      var throwntype = info.type;
      if (!throwntype) {
        // just pass through the thrown ptr
        return ((asm["setTempRet0"](0),thrown)|0);
      }
      var typeArray = Array.prototype.slice.call(arguments);
  
      var pointer = Module['___cxa_is_pointer_type'](throwntype);
      // can_catch receives a **, add indirection
      if (!___cxa_find_matching_catch.buffer) ___cxa_find_matching_catch.buffer = _malloc(4);
      HEAP32[((___cxa_find_matching_catch.buffer)>>2)]=thrown;
      thrown = ___cxa_find_matching_catch.buffer;
      // The different catch blocks are denoted by different types.
      // Due to inheritance, those types may not precisely match the
      // type of the thrown object. Find one which matches, and
      // return the type of the catch block which should be called.
      for (var i = 0; i < typeArray.length; i++) {
        if (typeArray[i] && Module['___cxa_can_catch'](typeArray[i], throwntype, thrown)) {
          thrown = HEAP32[((thrown)>>2)]; // undo indirection
          info.adjusted = thrown;
          return ((asm["setTempRet0"](typeArray[i]),thrown)|0);
        }
      }
      // Shouldn't happen unless we have bogus data in typeArray
      // or encounter a type for which emscripten doesn't have suitable
      // typeinfo defined. Best-efforts match just in case.
      thrown = HEAP32[((thrown)>>2)]; // undo indirection
      return ((asm["setTempRet0"](throwntype),thrown)|0);
    }function ___cxa_throw(ptr, type, destructor) {
      EXCEPTIONS.infos[ptr] = {
        ptr: ptr,
        adjusted: ptr,
        type: type,
        destructor: destructor,
        refcount: 0
      };
      EXCEPTIONS.last = ptr;
      if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) {
        __ZSt18uncaught_exceptionv.uncaught_exception = 1;
      } else {
        __ZSt18uncaught_exceptionv.uncaught_exception++;
      }
      throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";
    }

   
  Module["_memset"] = _memset;

  var _BDtoILow=true;

  
  function getShiftFromSize(size) {
      switch (size) {
          case 1: return 0;
          case 2: return 1;
          case 4: return 2;
          case 8: return 3;
          default:
              throw new TypeError('Unknown type size: ' + size);
      }
    }function __embind_register_bool(rawType, name, size, trueValue, falseValue) {
      var shift = getShiftFromSize(size);
  
      name = readLatin1String(name);
      registerType(rawType, {
          name: name,
          'fromWireType': function(wt) {
              // ambiguous emscripten ABI: sometimes return values are
              // true or false, and sometimes integers (0 or 1)
              return !!wt;
          },
          'toWireType': function(destructors, o) {
              return o ? trueValue : falseValue;
          },
          'argPackAdvance': 8,
          'readValueFromPointer': function(pointer) {
              // TODO: if heap is fixed (like in asm.js) this could be executed outside
              var heap;
              if (size === 1) {
                  heap = HEAP8;
              } else if (size === 2) {
                  heap = HEAP16;
              } else if (size === 4) {
                  heap = HEAP32;
              } else {
                  throw new TypeError("Unknown boolean type size: " + name);
              }
              return this['fromWireType'](heap[pointer >> shift]);
          },
          destructorFunction: null, // This type does not need a destructor
      });
    }

   
  Module["_bitshift64Shl"] = _bitshift64Shl;

  function _abort() {
      Module['abort']();
    }

  
  function _free() {
  }
  Module["_free"] = _free;
  
  function _malloc(bytes) {
      /* Over-allocate to make sure it is byte-aligned by 8.
       * This will leak memory, but this is only the dummy
       * implementation (replaced by dlmalloc normally) so
       * not an issue.
       */
      var ptr = Runtime.dynamicAlloc(bytes + 8);
      return (ptr+8) & 0xFFFFFFF8;
    }
  Module["_malloc"] = _malloc;
  
  function simpleReadValueFromPointer(pointer) {
      return this['fromWireType'](HEAPU32[pointer >> 2]);
    }function __embind_register_std_string(rawType, name) {
      name = readLatin1String(name);
      registerType(rawType, {
          name: name,
          'fromWireType': function(value) {
              var length = HEAPU32[value >> 2];
              var a = new Array(length);
              for (var i = 0; i < length; ++i) {
                  a[i] = String.fromCharCode(HEAPU8[value + 4 + i]);
              }
              _free(value);
              return a.join('');
          },
          'toWireType': function(destructors, value) {
              if (value instanceof ArrayBuffer) {
                  value = new Uint8Array(value);
              }
  
              function getTAElement(ta, index) {
                  return ta[index];
              }
              function getStringElement(string, index) {
                  return string.charCodeAt(index);
              }
              var getElement;
              if (value instanceof Uint8Array) {
                  getElement = getTAElement;
              } else if (value instanceof Int8Array) {
                  getElement = getTAElement;
              } else if (typeof value === 'string') {
                  getElement = getStringElement;
              } else {
                  throwBindingError('Cannot pass non-string to std::string');
              }
  
              // assumes 4-byte alignment
              var length = value.length;
              var ptr = _malloc(4 + length);
              HEAPU32[ptr >> 2] = length;
              for (var i = 0; i < length; ++i) {
                  var charCode = getElement(value, i);
                  if (charCode > 255) {
                      _free(ptr);
                      throwBindingError('String has UTF-16 code units that do not fit in 8 bits');
                  }
                  HEAPU8[ptr + 4 + i] = charCode;
              }
              if (destructors !== null) {
                  destructors.push(_free, ptr);
              }
              return ptr;
          },
          'argPackAdvance': 8,
          'readValueFromPointer': simpleReadValueFromPointer,
          destructorFunction: function(ptr) { _free(ptr); },
      });
    }

  function __embind_register_std_wstring(rawType, charSize, name) {
      // nb. do not cache HEAPU16 and HEAPU32, they may be destroyed by enlargeMemory().
      name = readLatin1String(name);
      var getHeap, shift;
      if (charSize === 2) {
          getHeap = function() { return HEAPU16; };
          shift = 1;
      } else if (charSize === 4) {
          getHeap = function() { return HEAPU32; };
          shift = 2;
      }
      registerType(rawType, {
          name: name,
          'fromWireType': function(value) {
              var HEAP = getHeap();
              var length = HEAPU32[value >> 2];
              var a = new Array(length);
              var start = (value + 4) >> shift;
              for (var i = 0; i < length; ++i) {
                  a[i] = String.fromCharCode(HEAP[start + i]);
              }
              _free(value);
              return a.join('');
          },
          'toWireType': function(destructors, value) {
              // assumes 4-byte alignment
              var HEAP = getHeap();
              var length = value.length;
              var ptr = _malloc(4 + length * charSize);
              HEAPU32[ptr >> 2] = length;
              var start = (ptr + 4) >> shift;
              for (var i = 0; i < length; ++i) {
                  HEAP[start + i] = value.charCodeAt(i);
              }
              if (destructors !== null) {
                  destructors.push(_free, ptr);
              }
              return ptr;
          },
          'argPackAdvance': 8,
          'readValueFromPointer': simpleReadValueFromPointer,
          destructorFunction: function(ptr) { _free(ptr); },
      });
    }

  function ___lock() {}

  function ___unlock() {}

  var _emscripten_asm_const_int=true;

   
  Module["_i64Add"] = _i64Add;

  var _fabs=Math_abs;

  var _sqrt=Math_sqrt;

  
  function _embind_repr(v) {
      if (v === null) {
          return 'null';
      }
      var t = typeof v;
      if (t === 'object' || t === 'array' || t === 'function') {
          return v.toString();
      } else {
          return '' + v;
      }
    }
  
  function integerReadValueFromPointer(name, shift, signed) {
      // integers are quite common, so generate very specialized functions
      switch (shift) {
          case 0: return signed ?
              function readS8FromPointer(pointer) { return HEAP8[pointer]; } :
              function readU8FromPointer(pointer) { return HEAPU8[pointer]; };
          case 1: return signed ?
              function readS16FromPointer(pointer) { return HEAP16[pointer >> 1]; } :
              function readU16FromPointer(pointer) { return HEAPU16[pointer >> 1]; };
          case 2: return signed ?
              function readS32FromPointer(pointer) { return HEAP32[pointer >> 2]; } :
              function readU32FromPointer(pointer) { return HEAPU32[pointer >> 2]; };
          default:
              throw new TypeError("Unknown integer type: " + name);
      }
    }function __embind_register_integer(primitiveType, name, size, minRange, maxRange) {
      name = readLatin1String(name);
      if (maxRange === -1) { // LLVM doesn't have signed and unsigned 32-bit types, so u32 literals come out as 'i32 -1'. Always treat those as max u32.
          maxRange = 4294967295;
      }
  
      var shift = getShiftFromSize(size);
      
      var fromWireType = function(value) {
          return value;
      };
      
      if (minRange === 0) {
          var bitshift = 32 - 8*size;
          fromWireType = function(value) {
              return (value << bitshift) >>> bitshift;
          };
      }
  
      registerType(primitiveType, {
          name: name,
          'fromWireType': fromWireType,
          'toWireType': function(destructors, value) {
              // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could
              // avoid the following two if()s and assume value is of proper type.
              if (typeof value !== "number" && typeof value !== "boolean") {
                  throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name);
              }
              if (value < minRange || value > maxRange) {
                  throw new TypeError('Passing a number "' + _embind_repr(value) + '" from JS side to C/C++ side to an argument of type "' + name + '", which is outside the valid range [' + minRange + ', ' + maxRange + ']!');
              }
              return value | 0;
          },
          'argPackAdvance': 8,
          'readValueFromPointer': integerReadValueFromPointer(name, shift, minRange !== 0),
          destructorFunction: null, // This type does not need a destructor
      });
    }

  
  
  var emval_free_list=[];
  
  var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle) {
      if (handle > 4 && 0 === --emval_handle_array[handle].refcount) {
          emval_handle_array[handle] = undefined;
          emval_free_list.push(handle);
      }
    }
  
  
  
  function count_emval_handles() {
      var count = 0;
      for (var i = 5; i < emval_handle_array.length; ++i) {
          if (emval_handle_array[i] !== undefined) {
              ++count;
          }
      }
      return count;
    }
  
  function get_first_emval() {
      for (var i = 5; i < emval_handle_array.length; ++i) {
          if (emval_handle_array[i] !== undefined) {
              return emval_handle_array[i];
          }
      }
      return null;
    }function init_emval() {
      Module['count_emval_handles'] = count_emval_handles;
      Module['get_first_emval'] = get_first_emval;
    }function __emval_register(value) {
  
      switch(value){
        case undefined :{ return 1; }
        case null :{ return 2; }
        case true :{ return 3; }
        case false :{ return 4; }
        default:{
          var handle = emval_free_list.length ?
              emval_free_list.pop() :
              emval_handle_array.length;
  
          emval_handle_array[handle] = {refcount: 1, value: value};
          return handle;
          }
        }
    }function __embind_register_emval(rawType, name) {
      name = readLatin1String(name);
      registerType(rawType, {
          name: name,
          'fromWireType': function(handle) {
              var rv = emval_handle_array[handle].value;
              __emval_decref(handle);
              return rv;
          },
          'toWireType': function(destructors, value) {
              return __emval_register(value);
          },
          'argPackAdvance': 8,
          'readValueFromPointer': simpleReadValueFromPointer,
          destructorFunction: null, // This type does not need a destructor
  
          // TODO: do we need a deleteObject here?  write a test where
          // emval is passed into JS via an interface
      });
    }

  function ___cxa_allocate_exception(size) {
      return _malloc(size);
    }

  var _sin=Math_sin;

  
  function ___setErrNo(value) {
      if (Module['___errno_location']) HEAP32[((Module['___errno_location']())>>2)]=value;
      else Module.printErr('failed to set errno from JS');
      return value;
    }
  
  var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _sysconf(name) {
      // long sysconf(int name);
      // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
      switch(name) {
        case 30: return PAGE_SIZE;
        case 85: return totalMemory / 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 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 79:
          return 0;
        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;
    }

   
  Module["_bitshift64Lshr"] = _bitshift64Lshr;

  
  function __exit(status) {
      // void _exit(int status);
      // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
      Module['exit'](status);
    }function _exit(status) {
      __exit(status);
    }

  var _llvm_ctlz_i32=true;

  
  function floatReadValueFromPointer(name, shift) {
      switch (shift) {
          case 2: return function(pointer) {
              return this['fromWireType'](HEAPF32[pointer >> 2]);
          };
          case 3: return function(pointer) {
              return this['fromWireType'](HEAPF64[pointer >> 3]);
          };
          default:
              throw new TypeError("Unknown float type: " + name);
      }
    }function __embind_register_float(rawType, name, size) {
      var shift = getShiftFromSize(size);
      name = readLatin1String(name);
      registerType(rawType, {
          name: name,
          'fromWireType': function(value) {
              return value;
          },
          'toWireType': function(destructors, value) {
              // todo: Here we have an opportunity for -O3 level "unsafe" optimizations: we could
              // avoid the following if() and assume value is of proper type.
              if (typeof value !== "number" && typeof value !== "boolean") {
                  throw new TypeError('Cannot convert "' + _embind_repr(value) + '" to ' + this.name);
              }
              return value;
          },
          'argPackAdvance': 8,
          'readValueFromPointer': floatReadValueFromPointer(name, shift),
          destructorFunction: null, // This type does not need a destructor
      });
    }

  var _BDtoIHigh=true;

  function _pthread_cleanup_push(routine, arg) {
      __ATEXIT__.push(function() { Runtime.dynCall('vi', routine, [arg]) })
      _pthread_cleanup_push.level = __ATEXIT__.length;
    }

  
  
  function new_(constructor, argumentList) {
      if (!(constructor instanceof Function)) {
          throw new TypeError('new_ called with constructor type ' + typeof(constructor) + " which is not a function");
      }
  
      /*
       * Previously, the following line was just:
  
       function dummy() {};
  
       * Unfortunately, Chrome was preserving 'dummy' as the object's name, even though at creation, the 'dummy' has the
       * correct constructor name.  Thus, objects created with IMVU.new would show up in the debugger as 'dummy', which
       * isn't very helpful.  Using IMVU.createNamedFunction addresses the issue.  Doublely-unfortunately, there's no way
       * to write a test for this behavior.  -NRD 2013.02.22
       */
      var dummy = createNamedFunction(constructor.name || 'unknownFunctionName', function(){});
      dummy.prototype = constructor.prototype;
      var obj = new dummy;
  
      var r = constructor.apply(obj, argumentList);
      return (r instanceof Object) ? r : obj;
    }
  
  function runDestructors(destructors) {
      while (destructors.length) {
          var ptr = destructors.pop();
          var del = destructors.pop();
          del(ptr);
      }
    }function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) {
      // humanName: a human-readable string name for the function to be generated.
      // argTypes: An array that contains the embind type objects for all types in the function signature.
      //    argTypes[0] is the type object for the function return value.
      //    argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method.
      //    argTypes[2...] are the actual function parameters.
      // classType: The embind type object for the class to be bound, or null if this is not a method of a class.
      // cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code.
      // cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling.
      var argCount = argTypes.length;
  
      if (argCount < 2) {
          throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!");
      }
  
      var isClassMethodFunc = (argTypes[1] !== null && classType !== null);
  
      // Free functions with signature "void function()" do not need an invoker that marshalls between wire types.
  // TODO: This omits argument count check - enable only at -O3 or similar.
  //    if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) {
  //       return FUNCTION_TABLE[fn];
  //    }
  
      var argsList = "";
      var argsListWired = "";
      for(var i = 0; i < argCount - 2; ++i) {
          argsList += (i!==0?", ":"")+"arg"+i;
          argsListWired += (i!==0?", ":"")+"arg"+i+"Wired";
      }
  
      var invokerFnBody =
          "return function "+makeLegalFunctionName(humanName)+"("+argsList+") {\n" +
          "if (arguments.length !== "+(argCount - 2)+") {\n" +
              "throwBindingError('function "+humanName+" called with ' + arguments.length + ' arguments, expected "+(argCount - 2)+" args!');\n" +
          "}\n";
  
  
      // Determine if we need to use a dynamic stack to store the destructors for the function parameters.
      // TODO: Remove this completely once all function invokers are being dynamically generated.
      var needsDestructorStack = false;
  
      for(var i = 1; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here.
          if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { // The type does not define a destructor function - must use dynamic stack
              needsDestructorStack = true;
              break;
          }
      }
  
      if (needsDestructorStack) {
          invokerFnBody +=
              "var destructors = [];\n";
      }
  
      var dtorStack = needsDestructorStack ? "destructors" : "null";
      var args1 = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"];
      var args2 = [throwBindingError, cppInvokerFunc, cppTargetFunc, runDestructors, argTypes[0], argTypes[1]];
  
  
      if (isClassMethodFunc) {
          invokerFnBody += "var thisWired = classParam.toWireType("+dtorStack+", this);\n";
      }
  
      for(var i = 0; i < argCount - 2; ++i) {
          invokerFnBody += "var arg"+i+"Wired = argType"+i+".toWireType("+dtorStack+", arg"+i+"); // "+argTypes[i+2].name+"\n";
          args1.push("argType"+i);
          args2.push(argTypes[i+2]);
      }
  
      if (isClassMethodFunc) {
          argsListWired = "thisWired" + (argsListWired.length > 0 ? ", " : "") + argsListWired;
      }
  
      var returns = (argTypes[0].name !== "void");
  
      invokerFnBody +=
          (returns?"var rv = ":"") + "invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";
  
      if (needsDestructorStack) {
          invokerFnBody += "runDestructors(destructors);\n";
      } else {
          for(var i = isClassMethodFunc?1:2; i < argTypes.length; ++i) { // Skip return value at index 0 - it's not deleted here. Also skip class type if not a method.
              var paramName = (i === 1 ? "thisWired" : ("arg"+(i - 2)+"Wired"));
              if (argTypes[i].destructorFunction !== null) {
                  invokerFnBody += paramName+"_dtor("+paramName+"); // "+argTypes[i].name+"\n";
                  args1.push(paramName+"_dtor");
                  args2.push(argTypes[i].destructorFunction);
              }
          }
      }
  
      if (returns) {
          invokerFnBody += "var ret = retType.fromWireType(rv);\n" +
                           "return ret;\n";
      } else {
      }
      invokerFnBody += "}\n";
  
      args1.push(invokerFnBody);
  
      var invokerFunction = new_(Function, args1).apply(null, args2);
      return invokerFunction;
    }
  
  
  function ensureOverloadTable(proto, methodName, humanName) {
      if (undefined === proto[methodName].overloadTable) {
          var prevFunc = proto[methodName];
          // Inject an overload resolver function that routes to the appropriate overload based on the number of arguments.
          proto[methodName] = function() {
              // TODO This check can be removed in -O3 level "unsafe" optimizations.
              if (!proto[methodName].overloadTable.hasOwnProperty(arguments.length)) {
                  throwBindingError("Function '" + humanName + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + proto[methodName].overloadTable + ")!");
              }
              return proto[methodName].overloadTable[arguments.length].apply(this, arguments);
          };
          // Move the previous function into the overload table.
          proto[methodName].overloadTable = [];
          proto[methodName].overloadTable[prevFunc.argCount] = prevFunc;
      }
    }function exposePublicSymbol(name, value, numArguments) {
      if (Module.hasOwnProperty(name)) {
          if (undefined === numArguments || (undefined !== Module[name].overloadTable && undefined !== Module[name].overloadTable[numArguments])) {
              throwBindingError("Cannot register public name '" + name + "' twice");
          }
  
          // We are exposing a function with the same name as an existing function. Create an overload table and a function selector
          // that routes between the two.
          ensureOverloadTable(Module, name, name);
          if (Module.hasOwnProperty(numArguments)) {
              throwBindingError("Cannot register multiple overloads of a function with the same number of arguments (" + numArguments + ")!");
          }
          // Add the new function into the overload table.
          Module[name].overloadTable[numArguments] = value;
      }
      else {
          Module[name] = value;
          if (undefined !== numArguments) {
              Module[name].numArguments = numArguments;
          }
      }
    }
  
  function heap32VectorToArray(count, firstElement) {
      var array = [];
      for (var i = 0; i < count; i++) {
          array.push(HEAP32[(firstElement >> 2) + i]);
      }
      return array;
    }
  
  function replacePublicSymbol(name, value, numArguments) {
      if (!Module.hasOwnProperty(name)) {
          throwInternalError('Replacing nonexistant public symbol');
      }
      // If there's an overload table for this symbol, replace the symbol in the overload table instead.
      if (undefined !== Module[name].overloadTable && undefined !== numArguments) {
          Module[name].overloadTable[numArguments] = value;
      }
      else {
          Module[name] = value;
      }
    }
  
  function requireFunction(signature, rawFunction) {
      signature = readLatin1String(signature);
  
      function makeDynCaller(dynCall) {
          var args = [];
          for (var i = 1; i < signature.length; ++i) {
              args.push('a' + i);
          }
  
          var name = 'dynCall_' + signature + '_' + rawFunction;
          var body = 'return function ' + name + '(' + args.join(', ') + ') {\n';
          body    += '    return dynCall(rawFunction' + (args.length ? ', ' : '') + args.join(', ') + ');\n';
          body    += '};\n';
  
          return (new Function('dynCall', 'rawFunction', body))(dynCall, rawFunction);
      }
  
      var fp;
      if (Module['FUNCTION_TABLE_' + signature] !== undefined) {
          fp = Module['FUNCTION_TABLE_' + signature][rawFunction];
      } else if (typeof FUNCTION_TABLE !== "undefined") {
          fp = FUNCTION_TABLE[rawFunction];
      } else {
          // asm.js does not give direct access to the function tables,
          // and thus we must go through the dynCall interface which allows
          // calling into a signature's function table by pointer value.
          //
          // https://github.com/dherman/asm.js/issues/83
          //
          // This has three main penalties:
          // - dynCall is another function call in the path from JavaScript to C++.
          // - JITs may not predict through the function table indirection at runtime.
          var dc = asm['dynCall_' + signature];
          if (dc === undefined) {
              // We will always enter this branch if the signature
              // contains 'f' and PRECISE_F32 is not enabled.
              //
              // Try again, replacing 'f' with 'd'.
              dc = asm['dynCall_' + signature.replace(/f/g, 'd')];
              if (dc === undefined) {
                  throwBindingError("No dynCall invoker for signature: " + signature);
              }
          }
          fp = makeDynCaller(dc);
      }
  
      if (typeof fp !== "function") {
          throwBindingError("unknown function pointer with signature " + signature + ": " + rawFunction);
      }
      return fp;
    }
  
  
  var UnboundTypeError=undefined;
  
  function getTypeName(type) {
      var ptr = ___getTypeName(type);
      var rv = readLatin1String(ptr);
      _free(ptr);
      return rv;
    }function throwUnboundTypeError(message, types) {
      var unboundTypes = [];
      var seen = {};
      function visit(type) {
          if (seen[type]) {
              return;
          }
          if (registeredTypes[type]) {
              return;
          }
          if (typeDependencies[type]) {
              typeDependencies[type].forEach(visit);
              return;
          }
          unboundTypes.push(type);
          seen[type] = true;
      }
      types.forEach(visit);
  
      throw new UnboundTypeError(message + ': ' + unboundTypes.map(getTypeName).join([', ']));
    }function __embind_register_function(name, argCount, rawArgTypesAddr, signature, rawInvoker, fn) {
      var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr);
      name = readLatin1String(name);
      
      rawInvoker = requireFunction(signature, rawInvoker);
  
      exposePublicSymbol(name, function() {
          throwUnboundTypeError('Cannot call ' + name + ' due to unbound types', argTypes);
      }, argCount - 1);
  
      whenDependentTypesAreResolved([], argTypes, function(argTypes) {
          var invokerArgsArray = [argTypes[0] /* return value */, null /* no class 'this'*/].concat(argTypes.slice(1) /* actual params */);
          replacePublicSymbol(name, craftInvokerFunction(name, invokerArgsArray, null /* no class 'this'*/, rawInvoker, fn), argCount - 1);
          return [];
      });
    }

  function __embind_register_constant(name, type, value) {
      name = readLatin1String(name);
      whenDependentTypesAreResolved([], [type], function(type) {
          type = type[0];
          Module[name] = type['fromWireType'](value);
          return [];
      });
    }

  function _pthread_cleanup_pop() {
      assert(_pthread_cleanup_push.level == __ATEXIT__.length, 'cannot pop if something else added meanwhile!');
      __ATEXIT__.pop();
      _pthread_cleanup_push.level = __ATEXIT__.length;
    }

  
  
  
  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
          stream.tty.ops.flush(stream.tty);
        },flush:function (stream) {
          stream.tty.ops.flush(stream.tty);
        },read:function (stream, buffer, offset, length, pos /* ignored */) {
          if (!stream.tty || !stream.tty.ops.get_char) {
            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
          }
          var bytesRead = 0;
          for (var i = 0; i < length; i++) {
            var result;
            try {
              result = stream.tty.ops.get_char(stream.tty);
            } catch (e) {
              throw new FS.ErrnoError(ERRNO_CODES.EIO);
            }
            if (result === undefined && bytesRead === 0) {
              throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
            }
            if (result === null || result === undefined) break;
            bytesRead++;
            buffer[offset+i] = result;
          }
          if (bytesRead) {
            stream.node.timestamp = Date.now();
          }
          return bytesRead;
        },write:function (stream, buffer, offset, length, pos) {
          if (!stream.tty || !stream.tty.ops.put_char) {
            throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
          }
          for (var i = 0; i < length; i++) {
            try {
              stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
            } catch (e) {
              throw new FS.ErrnoError(ERRNO_CODES.EIO);
            }
          }
          if (length) {
            stream.node.timestamp = Date.now();
          }
          return i;
        }},default_tty_ops:{get_char:function (tty) {
          if (!tty.input.length) {
            var result = null;
            if (ENVIRONMENT_IS_NODE) {
              // we will read data by chunks of BUFSIZE
              var BUFSIZE = 256;
              var buf = new Buffer(BUFSIZE);
              var bytesRead = 0;
  
              var fd = process.stdin.fd;
              // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync)
              var usingDevice = false;
              try {
                fd = fs.openSync('/dev/stdin', 'r');
                usingDevice = true;
              } catch (e) {}
  
              bytesRead = fs.readSync(fd, buf, 0, BUFSIZE, null);
  
              if (usingDevice) { fs.closeSync(fd); }
              if (bytesRead > 0) {
                result = buf.slice(0, bytesRead).toString('utf-8');
              } else {
                result = null;
              }
  
            } 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'](UTF8ArrayToString(tty.output, 0));
            tty.output = [];
          } else {
            if (val != 0) tty.output.push(val); // val == 0 would cut text output off in the middle.
          }
        },flush:function (tty) {
          if (tty.output && tty.output.length > 0) {
            Module['print'](UTF8ArrayToString(tty.output, 0));
            tty.output = [];
          }
        }},default_tty1_ops:{put_char:function (tty, val) {
          if (val === null || val === 10) {
            Module['printErr'](UTF8ArrayToString(tty.output, 0));
            tty.output = [];
          } else {
            if (val != 0) tty.output.push(val);
          }
        },flush:function (tty) {
          if (tty.output && tty.output.length > 0) {
            Module['printErr'](UTF8ArrayToString(tty.output, 0));
            tty.output = [];
          }
        }}};
  
  var MEMFS={ops_table:null,mount:function (mount) {
        return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
      },createNode:function (parent, name, mode, dev) {
        if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
          // no supported
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }
        if (!MEMFS.ops_table) {
          MEMFS.ops_table = {
            dir: {
              node: {
                getattr: MEMFS.node_ops.getattr,
                setattr: MEMFS.node_ops.setattr,
                lookup: MEMFS.node_ops.lookup,
                mknod: MEMFS.node_ops.mknod,
                rename: MEMFS.node_ops.rename,
                unlink: MEMFS.node_ops.unlink,
                rmdir: MEMFS.node_ops.rmdir,
                readdir: MEMFS.node_ops.readdir,
                symlink: MEMFS.node_ops.symlink
              },
              stream: {
                llseek: MEMFS.stream_ops.llseek
              }
            },
            file: {
              node: {
                getattr: MEMFS.node_ops.getattr,
                setattr: MEMFS.node_ops.setattr
              },
              stream: {
                llseek: MEMFS.stream_ops.llseek,
                read: MEMFS.stream_ops.read,
                write: MEMFS.stream_ops.write,
                allocate: MEMFS.stream_ops.allocate,
                mmap: MEMFS.stream_ops.mmap,
                msync: MEMFS.stream_ops.msync
              }
            },
            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?
              assert(position === 0, 'canOwn must imply no weird position inside the file');
              node.contents = buffer.subarray(offset, offset + length);
              node.usedBytes = length;
              return length;
            } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data.
              node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
              node.usedBytes = length;
              return length;
            } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file?
              node.contents.set(buffer.subarray(offset, offset + length), position);
              return length;
            }
          }
  
          // Appending to an existing file and we need to reallocate, or source data did not come as a typed array.
          MEMFS.expandFileStorage(node, position+length);
          if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available.
          else {
            for (var i = 0; i < length; i++) {
             node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not.
            }
          }
          node.usedBytes = Math.max(node.usedBytes, position+length);
          return length;
        },llseek:function (stream, offset, whence) {
          var position = offset;
          if (whence === 1) {  // SEEK_CUR.
            position += stream.position;
          } else if (whence === 2) {  // SEEK_END.
            if (FS.isFile(stream.node.mode)) {
              position += stream.node.usedBytes;
            }
          }
          if (position < 0) {
            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
          }
          return position;
        },allocate:function (stream, offset, length) {
          MEMFS.expandFileStorage(stream.node, offset + length);
          stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
        },mmap:function (stream, buffer, offset, length, position, prot, flags) {
          if (!FS.isFile(stream.node.mode)) {
            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
          }
          var ptr;
          var allocated;
          var contents = stream.node.contents;
          // Only make a new copy when MAP_PRIVATE is specified.
          if ( !(flags & 2) &&
                (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
            // We can't emulate MAP_SHARED when the file is not backed by the buffer
            // we're mapping to (e.g. the HEAP buffer).
            allocated = false;
            ptr = contents.byteOffset;
          } else {
            // Try to avoid unnecessary slices.
            if (position > 0 || position + length < stream.node.usedBytes) {
              if (contents.subarray) {
                contents = contents.subarray(position, position + length);
              } else {
                contents = Array.prototype.slice.call(contents, position, position + length);
              }
            }
            allocated = true;
            ptr = _malloc(length);
            if (!ptr) {
              throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
            }
            buffer.set(contents, ptr);
          }
          return { ptr: ptr, allocated: allocated };
        },msync:function (stream, buffer, offset, length, mmapFlags) {
          if (!FS.isFile(stream.node.mode)) {
            throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
          }
          if (mmapFlags & 2) {
            // MAP_PRIVATE calls need not to be synced back to underlying fs
            return 0;
          }
  
          var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
          // should we check if bytesWritten and length are the same?
          return 0;
        }}};
  
  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);
          }
  
          if (!fileStore.indexNames.contains('timestamp')) {
            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(e) {
          callback(this.error);
          e.preventDefault();
        };
      },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(e) {
            callback(this.error);
            e.preventDefault();
          };
  
          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(e) {
          callback(this.error);
          e.preventDefault();
        };
      },storeRemoteEntry:function (store, path, entry, callback) {
        var req = store.put(entry, path);
        req.onsuccess = function() { callback(null); };
        req.onerror = function(e) {
          callback(this.error);
          e.preventDefault();
        };
      },removeRemoteEntry:function (store, path, callback) {
        var req = store.delete(path);
        req.onsuccess = function() { callback(null); };
        req.onerror = function(e) {
          callback(this.error);
          e.preventDefault();
        };
      },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(e) {
          done(this.error);
          e.preventDefault();
        };
  
        // 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) {
        flags &= ~0100000 /*O_LARGEFILE*/; // Ignore this flag from musl, otherwise node.js fails to open the file.
        if (flags in NODEFS.flagsToPermissionStringMap) {
          return NODEFS.flagsToPermissionStringMap[flags];
        } else {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
      },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 {
            path = fs.readlinkSync(path);
            path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path);
            return path;
          } catch (e) {
            if (!e.code) throw e;
            throw new FS.ErrnoError(ERRNO_CODES[e.code]);
          }
        }},stream_ops:{open:function (stream) {
          var path = NODEFS.realPath(stream.node);
          try {
            if (FS.isFile(stream.node.mode)) {
              stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
            }
          } catch (e) {
            if (!e.code) throw e;
            throw new FS.ErrnoError(ERRNO_CODES[e.code]);
          }
        },close:function (stream) {
          try {
            if (FS.isFile(stream.node.mode) && stream.nfd) {
              fs.closeSync(stream.nfd);
            }
          } catch (e) {
            if (!e.code) throw e;
            throw new FS.ErrnoError(ERRNO_CODES[e.code]);
          }
        },read:function (stream, buffer, offset, length, position) {
          if (length === 0) return 0; // node errors on 0 length reads
          // FIXME this is terrible.
          var nbuffer = new Buffer(length);
          var res;
          try {
            res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
          } catch (e) {
            throw new FS.ErrnoError(ERRNO_CODES[e.code]);
          }
          if (res > 0) {
            for (var i = 0; i < res; i++) {
              buffer[offset + i] = nbuffer[i];
            }
          }
          return res;
        },write:function (stream, buffer, offset, length, position) {
          // FIXME this is terrible.
          var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
          var res;
          try {
            res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
          } catch (e) {
            throw new FS.ErrnoError(ERRNO_CODES[e.code]);
          }
          return res;
        },llseek:function (stream, offset, whence) {
          var position = offset;
          if (whence === 1) {  // SEEK_CUR.
            position += stream.position;
          } else if (whence === 2) {  // SEEK_END.
            if (FS.isFile(stream.node.mode)) {
              try {
                var stat = fs.fstatSync(stream.nfd);
                position += stat.size;
              } catch (e) {
                throw new FS.ErrnoError(ERRNO_CODES[e.code]);
              }
            }
          }
  
          if (position < 0) {
            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
          }
  
          return position;
        }}};
  
  var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:function (mount) {
        assert(ENVIRONMENT_IS_WORKER);
        if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();
        var root = WORKERFS.createNode(null, '/', WORKERFS.DIR_MODE, 0);
        var createdParents = {};
        function ensureParent(path) {
          // return the parent node, creating subdirs as necessary
          var parts = path.split('/');
          var parent = root;
          for (var i = 0; i < parts.length-1; i++) {
            var curr = parts.slice(0, i+1).join('/');
            if (!createdParents[curr]) {
              createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0);
            }
            parent = createdParents[curr];
          }
          return parent;
        }
        function base(path) {
          var parts = path.split('/');
          return parts[parts.length-1];
        }
        // We also accept FileList here, by using Array.prototype
        Array.prototype.forEach.call(mount.opts["files"] || [], function(file) {
          WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
        });
        (mount.opts["blobs"] || []).forEach(function(obj) {
          WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
        });
        (mount.opts["packages"] || []).forEach(function(pack) {
          pack['metadata'].files.forEach(function(file) {
            var name = file.filename.substr(1); // remove initial slash
            WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack['blob'].slice(file.start, file.end));
          });
        });
        return root;
      },createNode:function (parent, name, mode, dev, contents, mtime) {
        var node = FS.createNode(parent, name, mode);
        node.mode = mode;
        node.node_ops = WORKERFS.node_ops;
        node.stream_ops = WORKERFS.stream_ops;
        node.timestamp = (mtime || new Date).getTime();
        assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
        if (mode === WORKERFS.FILE_MODE) {
          node.size = contents.size;
          node.contents = contents;
        } else {
          node.size = 4096;
          node.contents = {};
        }
        if (parent) {
          parent.contents[name] = node;
        }
        return node;
      },node_ops:{getattr:function (node) {
          return {
            dev: 1,
            ino: undefined,
            mode: node.mode,
            nlink: 1,
            uid: 0,
            gid: 0,
            rdev: undefined,
            size: node.size,
            atime: new Date(node.timestamp),
            mtime: new Date(node.timestamp),
            ctime: new Date(node.timestamp),
            blksize: 4096,
            blocks: Math.ceil(node.size / 4096),
          };
        },setattr:function (node, attr) {
          if (attr.mode !== undefined) {
            node.mode = attr.mode;
          }
          if (attr.timestamp !== undefined) {
            node.timestamp = attr.timestamp;
          }
        },lookup:function (parent, name) {
          throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
        },mknod:function (parent, name, mode, dev) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },rename:function (oldNode, newDir, newName) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },unlink:function (parent, name) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },rmdir:function (parent, name) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },readdir:function (node) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },symlink:function (parent, newName, oldPath) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        },readlink:function (node) {
          throw new FS.ErrnoError(ERRNO_CODES.EPERM);
        }},stream_ops:{read:function (stream, buffer, offset, length, position) {
          if (position >= stream.node.size) return 0;
          var chunk = stream.node.contents.slice(position, position + length);
          var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
          buffer.set(new Uint8Array(ab), offset);
          return chunk.size;
        },write:function (stream, buffer, offset, length, position) {
          throw new FS.ErrnoError(ERRNO_CODES.EIO);
        },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.size;
            }
          }
          if (position < 0) {
            throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
          }
          return position;
        }}};
  
  var _stdin=allocate(1, "i32*", ALLOC_STATIC);
  
  var _stdout=allocate(1, "i32*", ALLOC_STATIC);
  
  var _stderr=allocate(1, "i32*", ALLOC_STATIC);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:{},filesystems:null,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 perms = ['r', 'w', 'rw'][flag & 3];
        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;
      },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 PATH.resolve(FS.getPath(link.parent), 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;
        }
        // if asked only for a directory, then this must be one
        if ((flags & 65536) && !FS.isDir(node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
        }
        // 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) {
        if (stream.getdents) stream.getdents = null; // free readdir state
        try {
          if (stream.stream_ops.close) {
            stream.stream_ops.close(stream);
          }
        } catch (e) {
          throw e;
        } finally {
          FS.closeStream(stream.fd);
        }
      },llseek:function (stream, offset, whence) {
        if (!stream.seekable || !stream.stream_ops.llseek) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        stream.position = stream.stream_ops.llseek(stream, offset, whence);
        stream.ungotten = [];
        return stream.position;
      },read:function (stream, buffer, offset, length, position) {
        if (length < 0 || position < 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 2097155) === 1) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (FS.isDir(stream.node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
        }
        if (!stream.stream_ops.read) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        var seeking = true;
        if (typeof position === 'undefined') {
          position = stream.position;
          seeking = false;
        } else if (!stream.seekable) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
        if (!seeking) stream.position += bytesRead;
        return bytesRead;
      },write:function (stream, buffer, offset, length, position, canOwn) {
        if (length < 0 || position < 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 2097155) === 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (FS.isDir(stream.node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
        }
        if (!stream.stream_ops.write) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if (stream.flags & 1024) {
          // seek to the end before writing in append mode
          FS.llseek(stream, 0, 2);
        }
        var seeking = true;
        if (typeof position === 'undefined') {
          position = stream.position;
          seeking = false;
        } else if (!stream.seekable) {
          throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
        }
        var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
        if (!seeking) stream.position += bytesWritten;
        try {
          if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path);
        } catch(e) {
          console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message);
        }
        return bytesWritten;
      },allocate:function (stream, offset, length) {
        if (offset < 0 || length <= 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
        }
        if ((stream.flags & 2097155) === 0) {
          throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        }
        if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
          throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
        }
        if (!stream.stream_ops.allocate) {
          throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
        }
        stream.stream_ops.allocate(stream, offset, length);
      },mmap:function (stream, buffer, offset, length, position, prot, flags) {
        // TODO if PROT is PROT_WRITE, make sure we have write access
        if ((stream.flags & 2097155) === 1) {
          throw new FS.ErrnoError(ERRNO_CODES.EACCES);
        }
        if (!stream.stream_ops.mmap) {
          throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
        }
        return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
      },msync:function (stream, buffer, offset, length, mmapFlags) {
        if (!stream || !stream.stream_ops.msync) {
          return 0;
        }
        return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);
      },munmap:function (stream) {
        return 0;
      },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 = UTF8ArrayToString(buf, 0);
        } 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 buf = new Uint8Array(lengthBytesUTF8(data)+1);
          var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
          FS.write(stream, buf, 0, actualNumBytes, 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(stream, buffer, offset, length, pos) { return length; }
        });
        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');
      },createSpecialDirectories:function () {
        // create /proc/self/fd which allows /proc/self/fd/6 => readlink gives the name of the stream for fd 6 (see test_unistd_ttyname)
        FS.mkdir('/proc');
        FS.mkdir('/proc/self');
        FS.mkdir('/proc/self/fd');
        FS.mount({
          mount: function() {
            var node = FS.createNode('/proc/self', 'fd', 16384 | 0777, 73);
            node.node_ops = {
              lookup: function(parent, name) {
                var fd = +name;
                var stream = FS.getStream(fd);
                if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
                var ret = {
                  parent: null,
                  mount: { mountpoint: 'fake' },
                  node_ops: { readlink: function() { return stream.path } }
                };
                ret.parent = ret; // make it look like a simple root node
                return ret;
              }
            };
            return node;
          }
        }, {}, '/proc/self/fd');
      },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');
        assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
  
        var stdout = FS.open('/dev/stdout', 'w');
        assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
  
        var stderr = FS.open('/dev/stderr', 'w');
        assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
      },ensureErrnoError:function () {
        if (FS.ErrnoError) return;
        FS.ErrnoError = function ErrnoError(errno, node) {
          //Module.printErr(stackTrace()); // useful for debugging
          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];
          if (this.stack) this.stack = demangleAll(this.stack);
        };
        FS.ErrnoError.prototype = new Error();
        FS.ErrnoError.prototype.constructor = FS.ErrnoError;
        // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
        [ERRNO_CODES.ENOENT].forEach(function(code) {
          FS.genericErrors[code] = new FS.ErrnoError(code);
          FS.genericErrors[code].stack = '<generic error, no stack>';
        });
      },staticInit:function () {
        FS.ensureErrnoError();
  
        FS.nameTable = new Array(4096);
  
        FS.mount(MEMFS, {}, '/');
  
        FS.createDefaultDirectories();
        FS.createDefaultDevices();
        FS.createSpecialDirectories();
  
        FS.filesystems = {
          'MEMFS': MEMFS,
          'IDBFS': IDBFS,
          'NODEFS': NODEFS,
          'WORKERFS': WORKERFS,
        };
      },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;
        // force-flush all streams, so we get musl std streams printed out
        var fflush = Module['_fflush'];
        if (fflush) fflush(0);
        // close all of our streams
        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, preFinish) {
        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;
        var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname
        function processData(byteArray) {
          function finish(byteArray) {
            if (preFinish) preFinish();
            if (!dontCreateFile) {
              FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
            }
            if (onload) onload();
            removeRunDependency(dep);
          }
          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(dep);
              });
              handled = true;
            }
          });
          if (!handled) finish(byteArray);
        }
        addRunDependency(dep);
        if (typeof url == 'string') {
          Browser.asyncLoad(url, function(byteArray) {
            processData(byteArray);
          }, onerror);
        } else {
          processData(url);
        }
      },indexedDB:function () {
        return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
      },DB_NAME:function () {
        return 'EM_FS_' + window.location.pathname;
      },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
        onload = onload || function(){};
        onerror = onerror || function(){};
        var indexedDB = FS.indexedDB();
        try {
          var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
        } catch (e) {
          return onerror(e);
        }
        openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
          console.log('creating db');
          var db = openRequest.result;
          db.createObjectStore(FS.DB_STORE_NAME);
        };
        openRequest.onsuccess = function openRequest_onsuccess() {
          var db = openRequest.result;
          var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
          var files = transaction.objectStore(FS.DB_STORE_NAME);
          var ok = 0, fail = 0, total = paths.length;
          function finish() {
            if (fail == 0) onload(); else onerror();
          }
          paths.forEach(function(path) {
            var putRequest = files.put(FS.analyzePath(path).object.contents, path);
            putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
            putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
          });
          transaction.onerror = onerror;
        };
        openRequest.onerror = onerror;
      },loadFilesFromDB:function (paths, onload, onerror) {
        onload = onload || function(){};
        onerror = onerror || function(){};
        var indexedDB = FS.indexedDB();
        try {
          var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
        } catch (e) {
          return onerror(e);
        }
        openRequest.onupgradeneeded = onerror; // no database to load from
        openRequest.onsuccess = function openRequest_onsuccess() {
          var db = openRequest.result;
          try {
            var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
          } catch(e) {
            onerror(e);
            return;
          }
          var files = transaction.objectStore(FS.DB_STORE_NAME);
          var ok = 0, fail = 0, total = paths.length;
          function finish() {
            if (fail == 0) onload(); else onerror();
          }
          paths.forEach(function(path) {
            var getRequest = files.get(path);
            getRequest.onsuccess = function getRequest_onsuccess() {
              if (FS.analyzePath(path).exists) {
                FS.unlink(path);
              }
              FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
              ok++;
              if (ok + fail == total) finish();
            };
            getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
          });
          transaction.onerror = onerror;
        };
        openRequest.onerror = onerror;
      }};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:function (dirfd, path) {
        if (path[0] !== '/') {
          // relative path
          var dir;
          if (dirfd === -100) {
            dir = FS.cwd();
          } else {
            var dirstream = FS.getStream(dirfd);
            if (!dirstream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            dir = dirstream.path;
          }
          path = PATH.join2(dir, path);
        }
        return path;
      },doStat:function (func, path, buf) {
        try {
          var stat = func(path);
        } catch (e) {
          if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
            // an error occurred while trying to look up the path; we should just report ENOTDIR
            return -ERRNO_CODES.ENOTDIR;
          }
          throw e;
        }
        HEAP32[((buf)>>2)]=stat.dev;
        HEAP32[(((buf)+(4))>>2)]=0;
        HEAP32[(((buf)+(8))>>2)]=stat.ino;
        HEAP32[(((buf)+(12))>>2)]=stat.mode;
        HEAP32[(((buf)+(16))>>2)]=stat.nlink;
        HEAP32[(((buf)+(20))>>2)]=stat.uid;
        HEAP32[(((buf)+(24))>>2)]=stat.gid;
        HEAP32[(((buf)+(28))>>2)]=stat.rdev;
        HEAP32[(((buf)+(32))>>2)]=0;
        HEAP32[(((buf)+(36))>>2)]=stat.size;
        HEAP32[(((buf)+(40))>>2)]=4096;
        HEAP32[(((buf)+(44))>>2)]=stat.blocks;
        HEAP32[(((buf)+(48))>>2)]=(stat.atime.getTime() / 1000)|0;
        HEAP32[(((buf)+(52))>>2)]=0;
        HEAP32[(((buf)+(56))>>2)]=(stat.mtime.getTime() / 1000)|0;
        HEAP32[(((buf)+(60))>>2)]=0;
        HEAP32[(((buf)+(64))>>2)]=(stat.ctime.getTime() / 1000)|0;
        HEAP32[(((buf)+(68))>>2)]=0;
        HEAP32[(((buf)+(72))>>2)]=stat.ino;
        return 0;
      },doMsync:function (addr, stream, len, flags) {
        var buffer = new Uint8Array(HEAPU8.subarray(addr, addr + len));
        FS.msync(stream, buffer, 0, len, flags);
      },doMkdir:function (path, mode) {
        // remove a trailing slash, if one - /a/b/ has basename of '', but
        // we want to create b in the context of this function
        path = PATH.normalize(path);
        if (path[path.length-1] === '/') path = path.substr(0, path.length-1);
        FS.mkdir(path, mode, 0);
        return 0;
      },doMknod:function (path, mode, dev) {
        // we don't want this in the JS API as it uses mknod to create all nodes.
        switch (mode & 61440) {
          case 32768:
          case 8192:
          case 24576:
          case 4096:
          case 49152:
            break;
          default: return -ERRNO_CODES.EINVAL;
        }
        FS.mknod(path, mode, dev);
        return 0;
      },doReadlink:function (path, buf, bufsize) {
        if (bufsize <= 0) return -ERRNO_CODES.EINVAL;
        var ret = FS.readlink(path);
        ret = ret.slice(0, Math.max(0, bufsize));
        writeStringToMemory(ret, buf, true);
        return ret.length;
      },doAccess:function (path, amode) {
        if (amode & ~7) {
          // need a valid mode
          return -ERRNO_CODES.EINVAL;
        }
        var node;
        var lookup = FS.lookupPath(path, { follow: true });
        node = lookup.node;
        var perms = '';
        if (amode & 4) perms += 'r';
        if (amode & 2) perms += 'w';
        if (amode & 1) perms += 'x';
        if (perms /* otherwise, they've just passed F_OK */ && FS.nodePermissions(node, perms)) {
          return -ERRNO_CODES.EACCES;
        }
        return 0;
      },doDup:function (path, flags, suggestFD) {
        var suggest = FS.getStream(suggestFD);
        if (suggest) FS.close(suggest);
        return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
      },doReadv:function (stream, iov, iovcnt, offset) {
        var ret = 0;
        for (var i = 0; i < iovcnt; i++) {
          var ptr = HEAP32[(((iov)+(i*8))>>2)];
          var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
          var curr = FS.read(stream, HEAP8,ptr, len, offset);
          if (curr < 0) return -1;
          ret += curr;
          if (curr < len) break; // nothing more to read
        }
        return ret;
      },doWritev:function (stream, iov, iovcnt, offset) {
        var ret = 0;
        for (var i = 0; i < iovcnt; i++) {
          var ptr = HEAP32[(((iov)+(i*8))>>2)];
          var len = HEAP32[(((iov)+(i*8 + 4))>>2)];
          var curr = FS.write(stream, HEAP8,ptr, len, offset);
          if (curr < 0) return -1;
          ret += curr;
        }
        return ret;
      },varargs:0,get:function (varargs) {
        SYSCALLS.varargs += 4;
        var ret = HEAP32[(((SYSCALLS.varargs)-(4))>>2)];
        return ret;
      },getStr:function () {
        var ret = Pointer_stringify(SYSCALLS.get());
        return ret;
      },getStreamFromFD:function () {
        var stream = FS.getStream(SYSCALLS.get());
        if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        return stream;
      },getSocketFromFD:function () {
        var socket = SOCKFS.getSocket(SYSCALLS.get());
        if (!socket) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
        return socket;
      },getSocketAddress:function (allowNull) {
        var addrp = SYSCALLS.get(), addrlen = SYSCALLS.get();
        if (allowNull && addrp === 0) return null;
        var info = __read_sockaddr(addrp, addrlen);
        if (info.errno) throw new FS.ErrnoError(info.errno);
        info.addr = DNS.lookup_addr(info.addr) || info.addr;
        return info;
      },get64:function () {
        var low = SYSCALLS.get(), high = SYSCALLS.get();
        if (low >= 0) assert(high === 0);
        else assert(high === -1);
        return low;
      },getZero:function () {
        assert(SYSCALLS.get() === 0);
      }};function ___syscall5(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // open
      var pathname = SYSCALLS.getStr(), flags = SYSCALLS.get(), mode = SYSCALLS.get() // optional TODO
      var stream = FS.open(pathname, flags, mode);
      return stream.fd;
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  
  function _emscripten_memcpy_big(dest, src, num) {
      HEAPU8.set(HEAPU8.subarray(src, src+num), dest);
      return dest;
    } 
  Module["_memcpy"] = _memcpy;

  function ___syscall6(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // close
      var stream = SYSCALLS.getStreamFromFD();
      FS.close(stream);
      return 0;
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  var _cos=Math_cos;

  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) {
        var success = self.alloc(bytes);
        if (!success) return -1 >>> 0; // sbrk failure code
      }
      return ret;  // Previous break location.
    }

   
  Module["_memmove"] = _memmove;

  var _BItoD=true;

  function ___syscall54(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // ioctl
      var stream = SYSCALLS.getStreamFromFD(), op = SYSCALLS.get();
      switch (op) {
        case 21505: {
          if (!stream.tty) return -ERRNO_CODES.ENOTTY;
          return 0;
        }
        case 21506: {
          if (!stream.tty) return -ERRNO_CODES.ENOTTY;
          return 0; // no-op, not actually adjusting terminal settings
        }
        case 21519: {
          if (!stream.tty) return -ERRNO_CODES.ENOTTY;
          var argp = SYSCALLS.get();
          HEAP32[((argp)>>2)]=0;
          return 0;
        }
        case 21520: {
          if (!stream.tty) return -ERRNO_CODES.ENOTTY;
          return -ERRNO_CODES.EINVAL; // not supported
        }
        case 21531: {
          var argp = SYSCALLS.get();
          return FS.ioctl(stream, op, argp);
        }
        default: abort('bad ioctl syscall ' + op);
      }
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  var _ceilf=Math_ceil;

  function __embind_register_memory_view(rawType, dataTypeIndex, name) {
      var typeMapping = [
          Int8Array,
          Uint8Array,
          Int16Array,
          Uint16Array,
          Int32Array,
          Uint32Array,
          Float32Array,
          Float64Array,
      ];
  
      var TA = typeMapping[dataTypeIndex];
  
      function decodeMemoryView(handle) {
          handle = handle >> 2;
          var heap = HEAPU32;
          var size = heap[handle]; // in elements
          var data = heap[handle + 1]; // byte offset into emscripten heap
          return new TA(heap['buffer'], data, size);
      }
  
      name = readLatin1String(name);
      registerType(rawType, {
          name: name,
          'fromWireType': decodeMemoryView,
          'argPackAdvance': 8,
          'readValueFromPointer': decodeMemoryView,
      }, {
          ignoreDuplicateRegistrations: true,
      });
    }

  function _time(ptr) {
      var ret = (Date.now()/1000)|0;
      if (ptr) {
        HEAP32[((ptr)>>2)]=ret;
      }
      return ret;
    }

  function _pthread_self() {
      //FIXME: assumes only a single thread
      return 0;
    }

  function ___syscall140(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // llseek
      var stream = SYSCALLS.getStreamFromFD(), offset_high = SYSCALLS.get(), offset_low = SYSCALLS.get(), result = SYSCALLS.get(), whence = SYSCALLS.get();
      var offset = offset_low;
      assert(offset_high === 0);
      FS.llseek(stream, offset, whence);
      HEAP32[((result)>>2)]=stream.position;
      if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; // reset readdir state
      return 0;
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  function ___syscall146(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // writev
      var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
      return SYSCALLS.doWritev(stream, iov, iovcnt);
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  function ___syscall221(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // fcntl64
      var stream = SYSCALLS.getStreamFromFD(), cmd = SYSCALLS.get();
      switch (cmd) {
        case 0: {
          var arg = SYSCALLS.get();
          if (arg < 0) {
            return -ERRNO_CODES.EINVAL;
          }
          var newStream;
          newStream = FS.open(stream.path, stream.flags, 0, arg);
          return newStream.fd;
        }
        case 1:
        case 2:
          return 0;  // FD_CLOEXEC makes no sense for a single process.
        case 3:
          return stream.flags;
        case 4: {
          var arg = SYSCALLS.get();
          stream.flags |= arg;
          return 0;
        }
        case 12:
        case 12: {
          var arg = SYSCALLS.get();
          var offset = 0;
          // We're always unlocked.
          HEAP16[(((arg)+(offset))>>1)]=2;
          return 0;
        }
        case 13:
        case 14:
        case 13:
        case 14:
          return 0; // Pretend that the locking is successful.
        case 16:
        case 8:
          return -ERRNO_CODES.EINVAL; // These are for sockets. We don't have them fully implemented yet.
        case 9:
          // musl trusts getown return values, due to a bug where they must be, as they overlap with errors. just return -1 here, so fnctl() returns that, and we set errno ourselves.
          ___setErrNo(ERRNO_CODES.EINVAL);
          return -1;
        default: {
          return -ERRNO_CODES.EINVAL;
        }
      }
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  function ___syscall145(which, varargs) {SYSCALLS.varargs = varargs;
  try {
   // readv
      var stream = SYSCALLS.getStreamFromFD(), iov = SYSCALLS.get(), iovcnt = SYSCALLS.get();
      return SYSCALLS.doReadv(stream, iov, iovcnt);
    } catch (e) {
    if (typeof FS === 'undefined' || !(e instanceof FS.ErrnoError)) abort(e);
    return -e.errno;
  }
  }

  var ___dso_handle=allocate(1, "i32*", ALLOC_STATIC);
embind_init_charCodes()
BindingError = Module['BindingError'] = extendError(Error, 'BindingError');
InternalError = Module['InternalError'] = extendError(Error, 'InternalError');
init_emval();
UnboundTypeError = Module['UnboundTypeError'] = extendError(Error, 'UnboundTypeError');
FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(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;Module["FS_unlink"] = FS.unlink;
__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() });
if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); }
STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);

staticSealed = true; // seal the static portion of memory

STACK_MAX = STACK_BASE + TOTAL_STACK;

DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);

assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");

 var 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 nullFunc_iiii(x) { Module["printErr"]("Invalid function pointer called with signature 'iiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_viiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_dii(x) { Module["printErr"]("Invalid function pointer called with signature 'dii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_vid(x) { Module["printErr"]("Invalid function pointer called with signature 'vid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_di(x) { Module["printErr"]("Invalid function pointer called with signature 'di'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_i(x) { Module["printErr"]("Invalid function pointer called with signature 'i'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_vi(x) { Module["printErr"]("Invalid function pointer called with signature 'vi'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_vii(x) { Module["printErr"]("Invalid function pointer called with signature 'vii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_ii(x) { Module["printErr"]("Invalid function pointer called with signature 'ii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_viii(x) { Module["printErr"]("Invalid function pointer called with signature 'viii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_v(x) { Module["printErr"]("Invalid function pointer called with signature 'v'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_viid(x) { Module["printErr"]("Invalid function pointer called with signature 'viid'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_iiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'iiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_viiiiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiiiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_iii(x) { Module["printErr"]("Invalid function pointer called with signature 'iii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

function nullFunc_viiii(x) { Module["printErr"]("Invalid function pointer called with signature 'viiii'. Perhaps this is an invalid value (e.g. caused by calling a virtual method on a NULL pointer)? Or calling a function with an incorrect type, which will fail? (it is worth building your source files with -Werror (warnings are errors), as warnings can indicate undefined behavior which can cause this)");  Module["printErr"]("Build with ASSERTIONS=2 for more info.");abort(x) }

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_viiiii(index,a1,a2,a3,a4,a5) {
  try {
    Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_dii(index,a1,a2) {
  try {
    return Module["dynCall_dii"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_vid(index,a1,a2) {
  try {
    Module["dynCall_vid"](index,a1,a2);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_di(index,a1) {
  try {
    return Module["dynCall_di"](index,a1);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_i(index) {
  try {
    return Module["dynCall_i"](index);
  } 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_viii(index,a1,a2,a3) {
  try {
    Module["dynCall_viii"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_v(index) {
  try {
    Module["dynCall_v"](index);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_viid(index,a1,a2,a3) {
  try {
    Module["dynCall_viid"](index,a1,a2,a3);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_iiiii(index,a1,a2,a3,a4) {
  try {
    return Module["dynCall_iiiii"](index,a1,a2,a3,a4);
  } catch(e) {
    if (typeof e !== 'number' && e !== 'longjmp') throw e;
    asm["setThrew"](1, 0);
  }
}

function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) {
  try {
    Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6);
  } 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, "NaN": NaN, "Infinity": Infinity, "byteLength": byteLength };

Module.asmLibraryArg = { "abort": abort, "assert": assert, "nullFunc_iiii": nullFunc_iiii, "nullFunc_viiiii": nullFunc_viiiii, "nullFunc_dii": nullFunc_dii, "nullFunc_vid": nullFunc_vid, "nullFunc_di": nullFunc_di, "nullFunc_i": nullFunc_i, "nullFunc_vi": nullFunc_vi, "nullFunc_vii": nullFunc_vii, "nullFunc_ii": nullFunc_ii, "nullFunc_viii": nullFunc_viii, "nullFunc_v": nullFunc_v, "nullFunc_viid": nullFunc_viid, "nullFunc_iiiii": nullFunc_iiiii, "nullFunc_viiiiii": nullFunc_viiiiii, "nullFunc_iii": nullFunc_iii, "nullFunc_viiii": nullFunc_viiii, "invoke_iiii": invoke_iiii, "invoke_viiiii": invoke_viiiii, "invoke_dii": invoke_dii, "invoke_vid": invoke_vid, "invoke_di": invoke_di, "invoke_i": invoke_i, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viii": invoke_viii, "invoke_v": invoke_v, "invoke_viid": invoke_viid, "invoke_iiiii": invoke_iiiii, "invoke_viiiiii": invoke_viiiiii, "invoke_iii": invoke_iii, "invoke_viiii": invoke_viiii, "_fabs": _fabs, "___syscall221": ___syscall221, "_sin": _sin, "floatReadValueFromPointer": floatReadValueFromPointer, "simpleReadValueFromPointer": simpleReadValueFromPointer, "___syscall54": ___syscall54, "__embind_register_memory_view": __embind_register_memory_view, "throwInternalError": throwInternalError, "get_first_emval": get_first_emval, "_abort": _abort, "_pthread_cleanup_push": _pthread_cleanup_push, "extendError": extendError, "__embind_register_integer": __embind_register_integer, "___assert_fail": ___assert_fail, "init_emval": init_emval, "___cxa_allocate_exception": ___cxa_allocate_exception, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_ceilf": _ceilf, "getShiftFromSize": getShiftFromSize, "__embind_register_function": __embind_register_function, "__embind_register_emval": __embind_register_emval, "_emscripten_asm_const_33": _emscripten_asm_const_33, "__embind_register_constant": __embind_register_constant, "___setErrNo": ___setErrNo, "__emval_register": __emval_register, "_sbrk": _sbrk, "readLatin1String": readLatin1String, "__embind_register_void": __embind_register_void, "_emscripten_memcpy_big": _emscripten_memcpy_big, "__embind_register_bool": __embind_register_bool, "___resumeException": ___resumeException, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_sysconf": _sysconf, "_embind_repr": _embind_repr, "__embind_register_std_wstring": __embind_register_std_wstring, "createNamedFunction": createNamedFunction, "embind_init_charCodes": embind_init_charCodes, "_cos": _cos, "getTypeName": getTypeName, "throwUnboundTypeError": throwUnboundTypeError, "_pthread_self": _pthread_self, "craftInvokerFunction": craftInvokerFunction, "__emval_decref": __emval_decref, "_sqrt": _sqrt, "__embind_register_float": __embind_register_float, "makeLegalFunctionName": makeLegalFunctionName, "integerReadValueFromPointer": integerReadValueFromPointer, "___unlock": ___unlock, "heap32VectorToArray": heap32VectorToArray, "_pthread_cleanup_pop": _pthread_cleanup_pop, "whenDependentTypesAreResolved": whenDependentTypesAreResolved, "_exit": _exit, "___syscall5": ___syscall5, "_emscripten_asm_const_4": _emscripten_asm_const_4, "___cxa_atexit": ___cxa_atexit, "registerType": registerType, "___cxa_throw": ___cxa_throw, "__exit": __exit, "___lock": ___lock, "___syscall6": ___syscall6, "throwBindingError": throwBindingError, "ensureOverloadTable": ensureOverloadTable, "count_emval_handles": count_emval_handles, "_time": _time, "requireFunction": requireFunction, "runDestructors": runDestructors, "new_": new_, "_atexit": _atexit, "___syscall140": ___syscall140, "exposePublicSymbol": exposePublicSymbol, "_emscripten_asm_const_5": _emscripten_asm_const_5, "__embind_register_std_string": __embind_register_std_string, "replacePublicSymbol": replacePublicSymbol, "___syscall145": ___syscall145, "___syscall146": ___syscall146, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "___dso_handle": ___dso_handle };
// EMSCRIPTEN_START_ASM
var asm = (function(global, env, buffer) {
  'use asm';
  
  
  var Int8View = global.Int8Array;
  var Int16View = global.Int16Array;
  var Int32View = global.Int32Array;
  var Uint8View = global.Uint8Array;
  var Uint16View = global.Uint16Array;
  var Uint32View = global.Uint32Array;
  var Float32View = global.Float32Array;
  var Float64View = global.Float64Array;
  var HEAP8 = new Int8View(buffer);
  var HEAP16 = new Int16View(buffer);
  var HEAP32 = new Int32View(buffer);
  var HEAPU8 = new Uint8View(buffer);
  var HEAPU16 = new Uint16View(buffer);
  var HEAPU32 = new Uint32View(buffer);
  var HEAPF32 = new Float32View(buffer);
  var HEAPF64 = new Float64View(buffer);
  var byteLength = global.byteLength;


  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 ___dso_handle=env.___dso_handle|0;

  var __THREW__ = 0;
  var threwValue = 0;
  var setjmpId = 0;
  var undef = 0;
  var nan = global.NaN, inf = global.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 Math_min=global.Math.min;
  var Math_clz32=global.Math.clz32;
  var abort=env.abort;
  var assert=env.assert;
  var nullFunc_iiii=env.nullFunc_iiii;
  var nullFunc_viiiii=env.nullFunc_viiiii;
  var nullFunc_dii=env.nullFunc_dii;
  var nullFunc_vid=env.nullFunc_vid;
  var nullFunc_di=env.nullFunc_di;
  var nullFunc_i=env.nullFunc_i;
  var nullFunc_vi=env.nullFunc_vi;
  var nullFunc_vii=env.nullFunc_vii;
  var nullFunc_ii=env.nullFunc_ii;
  var nullFunc_viii=env.nullFunc_viii;
  var nullFunc_v=env.nullFunc_v;
  var nullFunc_viid=env.nullFunc_viid;
  var nullFunc_iiiii=env.nullFunc_iiiii;
  var nullFunc_viiiiii=env.nullFunc_viiiiii;
  var nullFunc_iii=env.nullFunc_iii;
  var nullFunc_viiii=env.nullFunc_viiii;
  var invoke_iiii=env.invoke_iiii;
  var invoke_viiiii=env.invoke_viiiii;
  var invoke_dii=env.invoke_dii;
  var invoke_vid=env.invoke_vid;
  var invoke_di=env.invoke_di;
  var invoke_i=env.invoke_i;
  var invoke_vi=env.invoke_vi;
  var invoke_vii=env.invoke_vii;
  var invoke_ii=env.invoke_ii;
  var invoke_viii=env.invoke_viii;
  var invoke_v=env.invoke_v;
  var invoke_viid=env.invoke_viid;
  var invoke_iiiii=env.invoke_iiiii;
  var invoke_viiiiii=env.invoke_viiiiii;
  var invoke_iii=env.invoke_iii;
  var invoke_viiii=env.invoke_viiii;
  var _fabs=env._fabs;
  var ___syscall221=env.___syscall221;
  var _sin=env._sin;
  var floatReadValueFromPointer=env.floatReadValueFromPointer;
  var simpleReadValueFromPointer=env.simpleReadValueFromPointer;
  var ___syscall54=env.___syscall54;
  var __embind_register_memory_view=env.__embind_register_memory_view;
  var throwInternalError=env.throwInternalError;
  var get_first_emval=env.get_first_emval;
  var _abort=env._abort;
  var _pthread_cleanup_push=env._pthread_cleanup_push;
  var extendError=env.extendError;
  var __embind_register_integer=env.__embind_register_integer;
  var ___assert_fail=env.___assert_fail;
  var init_emval=env.init_emval;
  var ___cxa_allocate_exception=env.___cxa_allocate_exception;
  var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv;
  var _ceilf=env._ceilf;
  var getShiftFromSize=env.getShiftFromSize;
  var __embind_register_function=env.__embind_register_function;
  var __embind_register_emval=env.__embind_register_emval;
  var _emscripten_asm_const_33=env._emscripten_asm_const_33;
  var __embind_register_constant=env.__embind_register_constant;
  var ___setErrNo=env.___setErrNo;
  var __emval_register=env.__emval_register;
  var _sbrk=env._sbrk;
  var readLatin1String=env.readLatin1String;
  var __embind_register_void=env.__embind_register_void;
  var _emscripten_memcpy_big=env._emscripten_memcpy_big;
  var __embind_register_bool=env.__embind_register_bool;
  var ___resumeException=env.___resumeException;
  var ___cxa_find_matching_catch=env.___cxa_find_matching_catch;
  var _sysconf=env._sysconf;
  var _embind_repr=env._embind_repr;
  var __embind_register_std_wstring=env.__embind_register_std_wstring;
  var createNamedFunction=env.createNamedFunction;
  var embind_init_charCodes=env.embind_init_charCodes;
  var _cos=env._cos;
  var getTypeName=env.getTypeName;
  var throwUnboundTypeError=env.throwUnboundTypeError;
  var _pthread_self=env._pthread_self;
  var craftInvokerFunction=env.craftInvokerFunction;
  var __emval_decref=env.__emval_decref;
  var _sqrt=env._sqrt;
  var __embind_register_float=env.__embind_register_float;
  var makeLegalFunctionName=env.makeLegalFunctionName;
  var integerReadValueFromPointer=env.integerReadValueFromPointer;
  var ___unlock=env.___unlock;
  var heap32VectorToArray=env.heap32VectorToArray;
  var _pthread_cleanup_pop=env._pthread_cleanup_pop;
  var whenDependentTypesAreResolved=env.whenDependentTypesAreResolved;
  var _exit=env._exit;
  var ___syscall5=env.___syscall5;
  var _emscripten_asm_const_4=env._emscripten_asm_const_4;
  var ___cxa_atexit=env.___cxa_atexit;
  var registerType=env.registerType;
  var ___cxa_throw=env.___cxa_throw;
  var __exit=env.__exit;
  var ___lock=env.___lock;
  var ___syscall6=env.___syscall6;
  var throwBindingError=env.throwBindingError;
  var ensureOverloadTable=env.ensureOverloadTable;
  var count_emval_handles=env.count_emval_handles;
  var _time=env._time;
  var requireFunction=env.requireFunction;
  var runDestructors=env.runDestructors;
  var new_=env.new_;
  var _atexit=env._atexit;
  var ___syscall140=env.___syscall140;
  var exposePublicSymbol=env.exposePublicSymbol;
  var _emscripten_asm_const_5=env._emscripten_asm_const_5;
  var __embind_register_std_string=env.__embind_register_std_string;
  var replacePublicSymbol=env.replacePublicSymbol;
  var ___syscall145=env.___syscall145;
  var ___syscall146=env.___syscall146;
  var tempFloat = 0.0;

function _emscripten_replace_memory(newBuffer) {
  if ((byteLength(newBuffer) & 0xffffff || byteLength(newBuffer) <= 0xffffff) || byteLength(newBuffer) > 0x80000000) return false;
  HEAP8 = new Int8View(newBuffer);
  HEAP16 = new Int16View(newBuffer);
  HEAP32 = new Int32View(newBuffer);
  HEAPU8 = new Uint8View(newBuffer);
  HEAPU16 = new Uint16View(newBuffer);
  HEAPU32 = new Uint32View(newBuffer);
  HEAPF32 = new Float32View(newBuffer);
  HEAPF64 = new Float64View(newBuffer);
  buffer = newBuffer;
  return true;
}

// EMSCRIPTEN_START_FUNCS

function __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i = 0, $$0$i$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i105 = 0, $$0$i$i$i113 = 0, $$0$i$i$i123 = 0, $$0$i$i$i131 = 0, $$0$i$i$i136 = 0, $$0$i$i$i148 = 0, $$0$i$i$i153 = 0, $$0$i$i$i17 = 0, $$0$i$i$i181 = 0, $$0$i$i$i191509 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i29 = 0, $$0$i$i$i31 = 0, $$0$i$i$i38 = 0, $$0$i$i$i43 = 0, $$0$i$i$i51 = 0, $$0$i$i$i56 = 0, $$0$i$i$i61 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i87 = 0, $$0$i$i$i95 = 0, $$01$i$i = 0, $$03$i$i = 0, $$08$i = 0, $$1$i$i = 0, $$1$i263 = 0, $$12$i$i = 0, $$13$i259$ph = 0, $$14$i$i = 0, $$2$i$i = 0, $$in = 0, $$lcssa667 = 0, $$lcssa674 = 0, $$lcssa682 = 0, $$lcssa690 = 0, $$lcssa698 = 0, $$lcssa706 = 0, $$ph390 = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i203 = 0, $$pre$i$i$i21$i = 0, $$pre$i$i$i36$i = 0, $$pre$i$i$i52$i = 0, $$pre$i$i$i71$i = 0, $0 = 0, $1 = 0, $10 = 0, $1001 = 0, $1003 = 0, $1006 = 0, $101 = 0, $1010 = 0, $1013 = 0, $1018 = 0, $1019 = 0, $1022 = 0, $1023 = 0, $1025 = 0, $1026 = 0, $1035 = 0, $1038 = 0, $104 = 0, $1043 = 0, $1044 = 0, $1049 = 0, $1051 = 0, $1054 = 0, $1058 = 0, $1061 = 0, $1066 = 0, $1067 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1073 = 0, $1074 = 0, $108 = 0, $1083 = 0, $1086 = 0, $1094 = 0, $1096 = 0, $11 = 0, $1100 = 0, $1101 = 0, $1103 = 0, $1110 = 0, $1112 = 0, $1120 = 0, $1121 = 0, $1122 = 0, $1123 = 0, $1126 = 0, $1129 = 0, $113 = 0, $1132 = 0, $1133 = 0, $1139 = 0, $1141 = 0, $1145 = 0, $115 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1159 = 0, $1161 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1168 = 0, $117 = 0, $1178 = 0, $1179 = 0, $1180 = 0, $1181 = 0, $1184 = 0, $1187 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0, $1201 = 0, $1202 = 0, $1203 = 0, $1205 = 0, $1210 = 0, $1217 = 0, $1219 = 0, $122 = 0, $1223 = 0, $1226 = 0, $1228 = 0, $123 = 0, $1233 = 0, $1237 = 0, $124 = 0, $1245 = 0, $1252 = 0, $1253 = 0, $1254 = 0, $1255 = 0, $1256 = 0, $1257 = 0, $126 = 0, $1269 = 0, $1270 = 0, $1271 = 0, $1274 = 0, $1277 = 0, $1283 = 0, $1289 = 0, $1290 = 0, $1291 = 0, $1297 = 0, $1299 = 0, $13 = 0, $1302 = 0, $1303 = 0, $1304 = 0, $1306 = 0, $1316 = 0, $1317 = 0, $1318 = 0, $1319 = 0, $1322 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1334 = 0, $1335 = 0, $1336 = 0, $1337 = 0, $1338 = 0, $1339 = 0, $134 = 0, $1340 = 0, $1342 = 0, $1343 = 0, $1344 = 0, $1346 = 0, $1351 = 0, $1358 = 0, $136 = 0, $1360 = 0, $1364 = 0, $1367 = 0, $1369 = 0, $1374 = 0, $1378 = 0, $1386 = 0, $1393 = 0, $1394 = 0, $1395 = 0, $1397 = 0, $14 = 0, $1402 = 0, $1409 = 0, $1411 = 0, $1415 = 0, $1418 = 0, $1420 = 0, $1425 = 0, $1426 = 0, $1427 = 0, $1428 = 0, $1432 = 0, $1436 = 0, $1439 = 0, $1443 = 0, $1444 = 0, $1446 = 0, $1449 = 0, $1455 = 0, $1458 = 0, $147 = 0, $1470 = 0, $1474 = 0, $1475 = 0, $1486 = 0, $1487 = 0, $1488 = 0, $1489 = 0, $149 = 0, $1490 = 0, $1491 = 0, $15 = 0, $1503 = 0, $1504 = 0, $1505 = 0, $1508 = 0, $1511 = 0, $1517 = 0, $1523 = 0, $1524 = 0, $1525 = 0, $1531 = 0, $1533 = 0, $1536 = 0, $1537 = 0, $1538 = 0, $1540 = 0, $1550 = 0, $1551 = 0, $1552 = 0, $1553 = 0, $1556 = 0, $1559 = 0, $1562 = 0, $1563 = 0, $1568 = 0, $1569 = 0, $1570 = 0, $1571 = 0, $1573 = 0, $1574 = 0, $1575 = 0, $1577 = 0, $1582 = 0, $1589 = 0, $1591 = 0, $1595 = 0, $1598 = 0, $16 = 0, $1600 = 0, $1605 = 0, $1609 = 0, $1617 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $1627 = 0, $1628 = 0, $1629 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1646 = 0, $1649 = 0, $165 = 0, $1655 = 0, $166 = 0, $1661 = 0, $1662 = 0, $1668 = 0, $167 = 0, $1670 = 0, $1671 = 0, $1673 = 0, $1674 = 0, $1675 = 0, $1676 = 0, $1677 = 0, $168 = 0, $1687 = 0, $1688 = 0, $1689 = 0, $169 = 0, $1690 = 0, $1693 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1700 = 0, $1705 = 0, $1707 = 0, $1708 = 0, $1709 = 0, $1710 = 0, $1711 = 0, $1712 = 0, $1724 = 0, $1725 = 0, $1726 = 0, $1729 = 0, $1732 = 0, $1743 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1753 = 0, $1755 = 0, $1766 = 0, $1768 = 0, $1769 = 0, $1776 = 0, $1778 = 0, $1786 = 0, $1787 = 0, $1788 = 0, $1789 = 0, $1792 = 0, $1795 = 0, $1798 = 0, $1799 = 0, $18 = 0, $1805 = 0, $1807 = 0, $181 = 0, $1811 = 0, $1813 = 0, $1815 = 0, $1817 = 0, $1818 = 0, $182 = 0, $1826 = 0, $1827 = 0, $1828 = 0, $1829 = 0, $183 = 0, $1831 = 0, $1832 = 0, $1834 = 0, $1839 = 0, $1846 = 0, $1848 = 0, $1853 = 0, $1858 = 0, $186 = 0, $1860 = 0, $1866 = 0, $1869 = 0, $1871 = 0, $1881 = 0, $1884 = 0, $1885 = 0, $1886 = 0, $1887 = 0, $1889 = 0, $189 = 0, $1891 = 0, $1892 = 0, $1894 = 0, $1895 = 0, $1897 = 0, $19 = 0, $1903 = 0, $1912 = 0, $1915 = 0, $1917 = 0, $1927 = 0, $1930 = 0, $1933 = 0, $1935 = 0, $1942 = 0, $1945 = 0, $1947 = 0, $195 = 0, $1954 = 0, $1955 = 0, $1956 = 0, $1957 = 0, $1961 = 0, $1963 = 0, $1966 = 0, $1967 = 0, $197 = 0, $1970 = 0, $1973 = 0, $1974 = 0, $1975 = 0, $1977 = 0, $1984 = 0, $1986 = 0, $1994 = 0, $1995 = 0, $1996 = 0, $1997 = 0, $2 = 0, $20 = 0, $200 = 0, $2000 = 0, $2003 = 0, $2006 = 0, $2007 = 0, $2013 = 0, $2015 = 0, $2019 = 0, $202 = 0, $2023 = 0, $2027 = 0, $2029 = 0, $2033 = 0, $2034 = 0, $2036 = 0, $204 = 0, $2043 = 0, $2045 = 0, $205 = 0, $2053 = 0, $2054 = 0, $2055 = 0, $2056 = 0, $2059 = 0, $2062 = 0, $2065 = 0, $2066 = 0, $2072 = 0, $2074 = 0, $2078 = 0, $208 = 0, $2080 = 0, $2082 = 0, $2083 = 0, $209 = 0, $2091 = 0, $2092 = 0, $2093 = 0, $2094 = 0, $2097 = 0, $2099 = 0, $21 = 0, $211 = 0, $2110 = 0, $2113 = 0, $2114 = 0, $2115 = 0, $2117 = 0, $212 = 0, $2124 = 0, $2126 = 0, $2134 = 0, $2135 = 0, $2136 = 0, $2137 = 0, $214 = 0, $2140 = 0, $2143 = 0, $2146 = 0, $2147 = 0, $2153 = 0, $2155 = 0, $2159 = 0, $2161 = 0, $2163 = 0, $2169 = 0, $2170 = 0, $2171 = 0, $2177 = 0, $2179 = 0, $2182 = 0, $2183 = 0, $2184 = 0, $2186 = 0, $219 = 0, $2196 = 0, $2197 = 0, $2198 = 0, $2199 = 0, $22 = 0, $2202 = 0, $2205 = 0, $2208 = 0, $2209 = 0, $2214 = 0, $2216 = 0, $2217 = 0, $2218 = 0, $2219 = 0, $2220 = 0, $2221 = 0, $2233 = 0, $2234 = 0, $2235 = 0, $2238 = 0, $2241 = 0, $2247 = 0, $2251 = 0, $2253 = 0, $2257 = 0, $2258 = 0, $226 = 0, $2260 = 0, $2267 = 0, $2269 = 0, $2277 = 0, $2278 = 0, $2279 = 0, $228 = 0, $2280 = 0, $2283 = 0, $2286 = 0, $2289 = 0, $2290 = 0, $2296 = 0, $2298 = 0, $23 = 0, $2308 = 0, $2309 = 0, $2311 = 0, $2317 = 0, $2318 = 0, $2322 = 0, $2326 = 0, $2329 = 0, $233 = 0, $2332 = 0, $2335 = 0, $2337 = 0, $2347 = 0, $2348 = 0, $2351 = 0, $2354 = 0, $2355 = 0, $2357 = 0, $2364 = 0, $2365 = 0, $2366 = 0, $2367 = 0, $2371 = 0, $2373 = 0, $2376 = 0, $2377 = 0, $238 = 0, $2382 = 0, $2385 = 0, $2386 = 0, $2393 = 0, $2394 = 0, $2395 = 0, $2396 = 0, $2398 = 0, $24 = 0, $240 = 0, $2402 = 0, $2405 = 0, $2408 = 0, $2424 = 0, $2425 = 0, $2426 = 0, $2427 = 0, $2432 = 0, $2434 = 0, $2438 = 0, $2441 = 0, $2444 = 0, $2446 = 0, $2459 = 0, $2461 = 0, $2465 = 0, $2466 = 0, $2468 = 0, $2475 = 0, $2477 = 0, $2485 = 0, $2486 = 0, $2487 = 0, $2488 = 0, $2491 = 0, $2494 = 0, $2497 = 0, $2498 = 0, $25 = 0, $250 = 0, $2504 = 0, $2506 = 0, $2510 = 0, $2512 = 0, $2516 = 0, $2518 = 0, $2522 = 0, $2523 = 0, $2525 = 0, $2532 = 0, $2534 = 0, $254 = 0, $2542 = 0, $2543 = 0, $2544 = 0, $2545 = 0, $2548 = 0, $255 = 0, $2551 = 0, $2554 = 0, $2555 = 0, $2561 = 0, $2563 = 0, $2567 = 0, $2568 = 0, $2569 = 0, $2570 = 0, $2571 = 0, $2572 = 0, $2573 = 0, $258 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $264 = 0, $269 = 0, $27 = 0, $276 = 0, $278 = 0, $28 = 0, $283 = 0, $288 = 0, $29 = 0, $290 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $308 = 0, $309 = 0, $31 = 0, $318 = 0, $32 = 0, $321 = 0, $324 = 0, $326 = 0, $33 = 0, $336 = 0, $34 = 0, $341 = 0, $342 = 0, $344 = 0, $345 = 0, $35 = 0, $353 = 0, $354 = 0, $355 = 0, $356 = 0, $359 = 0, $36 = 0, $360 = 0, $365 = 0, $367 = 0, $37 = 0, $370 = 0, $374 = 0, $377 = 0, $38 = 0, $382 = 0, $383 = 0, $386 = 0, $387 = 0, $389 = 0, $39 = 0, $390 = 0, $399 = 0, $4 = 0, $40 = 0, $402 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $415 = 0, $416 = 0, $418 = 0, $42 = 0, $422 = 0, $424 = 0, $429 = 0, $43 = 0, $434 = 0, $436 = 0, $44 = 0, $441 = 0, $442 = 0, $443 = 0, $446 = 0, $449 = 0, $45 = 0, $451 = 0, $458 = 0, $46 = 0, $465 = 0, $467 = 0, $47 = 0, $470 = 0, $474 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $486 = 0, $487 = 0, $489 = 0, $49 = 0, $490 = 0, $499 = 0, $5 = 0, $50 = 0, $502 = 0, $510 = 0, $512 = 0, $516 = 0, $517 = 0, $519 = 0, $526 = 0, $528 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $542 = 0, $545 = 0, $548 = 0, $549 = 0, $555 = 0, $557 = 0, $56 = 0, $561 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $57 = 0, $571 = 0, $574 = 0, $575 = 0, $577 = 0, $584 = 0, $586 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $6 = 0, $600 = 0, $603 = 0, $606 = 0, $607 = 0, $613 = 0, $615 = 0, $620 = 0, $624 = 0, $626 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $64 = 0, $641 = 0, $644 = 0, $648 = 0, $657 = 0, $658 = 0, $664 = 0, $669 = 0, $679 = 0, $681 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $698 = 0, $7 = 0, $70 = 0, $703 = 0, $705 = 0, $716 = 0, $718 = 0, $72 = 0, $722 = 0, $723 = 0, $725 = 0, $73 = 0, $732 = 0, $734 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $748 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $76 = 0, $761 = 0, $763 = 0, $767 = 0, $768 = 0, $77 = 0, $771 = 0, $772 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $783 = 0, $79 = 0, $790 = 0, $792 = 0, $8 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $806 = 0, $809 = 0, $812 = 0, $813 = 0, $819 = 0, $82 = 0, $821 = 0, $826 = 0, $827 = 0, $829 = 0, $831 = 0, $832 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $846 = 0, $856 = 0, $857 = 0, $858 = 0, $86 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $883 = 0, $885 = 0, $888 = 0, $892 = 0, $895 = 0, $9 = 0, $900 = 0, $901 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $917 = 0, $920 = 0, $925 = 0, $926 = 0, $929 = 0, $934 = 0, $936 = 0, $939 = 0, $943 = 0, $946 = 0, $95 = 0, $951 = 0, $952 = 0, $955 = 0, $956 = 0, $958 = 0, $959 = 0, $96 = 0, $968 = 0, $97 = 0, $971 = 0, $976 = 0, $979 = 0, $98 = 0, $981 = 0, $991 = 0, $994 = 0, $__p$0$i$i$i508 = 0, $__p$0$ph$i$i$i = 0, $__v$i$i$i = 0, $args = 0, $cv = 0, $k$0$i515 = 0, $k$0560 = 0, $k11$0540 = 0, $k15$0543 = 0, $k2$0$i516 = 0, $k20$0550 = 0, $k5$0533 = 0, $k8$0536 = 0, $num1$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $phitmp$i$i$i$i$i$i$i240 = 0, $phitmp$i2$i$i$i$i$i$i243 = 0, $proto = 0, $ref_qual$0$i$ph$ph = 0, $ref_qual$0$i$ph521 = 0, $ref_qual$0$i$ph521$lcssa = 0, $t$0$i = 0, $t$1$i$be = 0, $t$1$i$ph$ph = 0, $t$1$i$ph520 = 0, $t$1$i518 = 0, $t$1$i518$lcssa = 0, $t12$0$i = 0, $template_args = 0, $type = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 784 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i$i = sp + 752 | 0;
 $0 = sp + 728 | 0;
 $1 = sp + 716 | 0;
 $2 = sp + 704 | 0;
 $3 = sp + 680 | 0;
 $4 = sp + 656 | 0;
 $5 = sp + 632 | 0;
 $6 = sp + 620 | 0;
 $num1$i = sp + 608 | 0;
 $7 = sp + 596 | 0;
 $8 = sp + 584 | 0;
 $9 = sp + 572 | 0;
 $cv = sp + 568 | 0;
 $10 = sp + 552 | 0;
 $11 = sp + 544 | 0;
 $12 = sp + 528 | 0;
 $13 = sp + 520 | 0;
 $14 = sp + 504 | 0;
 $15 = sp + 496 | 0;
 $16 = sp + 480 | 0;
 $17 = sp + 472 | 0;
 $18 = sp + 456 | 0;
 $19 = sp + 452 | 0;
 $20 = sp + 440 | 0;
 $21 = sp + 428 | 0;
 $22 = sp + 416 | 0;
 $23 = sp + 404 | 0;
 $args = sp + 392 | 0;
 $24 = sp + 376 | 0;
 $25 = sp + 368 | 0;
 $type = sp + 356 | 0;
 $26 = sp + 344 | 0;
 $27 = sp + 320 | 0;
 $28 = sp + 308 | 0;
 $29 = sp + 296 | 0;
 $30 = sp + 284 | 0;
 $proto = sp + 272 | 0;
 $31 = sp + 248 | 0;
 $32 = sp + 236 | 0;
 $33 = sp + 224 | 0;
 $34 = sp + 212 | 0;
 $35 = sp + 200 | 0;
 $36 = sp + 176 | 0;
 $37 = sp + 164 | 0;
 $38 = sp + 152 | 0;
 $39 = sp + 136 | 0;
 $40 = sp + 128 | 0;
 $41 = sp + 112 | 0;
 $42 = sp + 108 | 0;
 $template_args = sp + 96 | 0;
 $43 = sp + 80 | 0;
 $44 = sp + 72 | 0;
 $45 = sp + 56 | 0;
 $46 = sp + 48 | 0;
 $47 = sp + 32 | 0;
 $48 = sp + 24 | 0;
 $49 = sp + 8 | 0;
 $50 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {
  switch (HEAP8[$first >> 0] | 0) {
  case 75:
  case 86:
  case 114:
   {
    HEAP32[$cv >> 2] = 0;
    $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) | 0;
    if (($54 | 0) == ($first | 0)) {
     $$0 = $first;
     break L1;
    }
    $56 = HEAP8[$54 >> 0] | 0;
    $57 = $db + 4 | 0;
    $63 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
    $64 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0;
    $70 = ((HEAP32[$57 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
    if (($64 | 0) == ($54 | 0)) {
     $$0 = $first;
     break L1;
    }
    $72 = $56 << 24 >> 24 == 70;
    $73 = $db + 20 | 0;
    $74 = HEAP32[$73 >> 2] | 0;
    if ($72) {
     $75 = $74 + -16 | 0;
     $77 = $74;
     do {
      $76 = $77 + -16 | 0;
      HEAP32[$73 >> 2] = $76;
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($76);
      $77 = HEAP32[$73 >> 2] | 0;
     } while (($77 | 0) != ($75 | 0));
     $86 = $75;
    } else $86 = $74;
    $79 = $db + 16 | 0;
    $82 = HEAP32[$db + 12 >> 2] | 0;
    $84 = HEAP32[$db + 24 >> 2] | 0;
    if ($86 >>> 0 < $84 >>> 0) {
     HEAP32[$86 >> 2] = 0;
     HEAP32[$86 + 4 >> 2] = 0;
     HEAP32[$86 + 8 >> 2] = 0;
     HEAP32[$86 + 12 >> 2] = $82;
     HEAP32[$73 >> 2] = (HEAP32[$73 >> 2] | 0) + 16;
    } else {
     $95 = HEAP32[$79 >> 2] | 0;
     $96 = $86 - $95 | 0;
     $97 = $96 >> 4;
     $98 = $97 + 1 | 0;
     if (($96 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($79);
     $101 = $84 - $95 | 0;
     if ($101 >> 4 >>> 0 < 1073741823) {
      $104 = $101 >> 3;
      $$0$i$i$i38 = $104 >>> 0 < $98 >>> 0 ? $98 : $104;
     } else $$0$i$i$i38 = 2147483647;
     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i38, $97, $db + 28 | 0);
     $107 = $__v$i$i$i + 8 | 0;
     $108 = HEAP32[$107 >> 2] | 0;
     HEAP32[$108 >> 2] = 0;
     HEAP32[$108 + 4 >> 2] = 0;
     HEAP32[$108 + 8 >> 2] = 0;
     HEAP32[$108 + 12 >> 2] = $82;
     HEAP32[$107 >> 2] = $108 + 16;
     __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($79, $__v$i$i$i);
     __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
    }
    $113 = HEAP32[$cv >> 2] | 0;
    $115 = ($113 & 1 | 0) == 0;
    $117 = ($113 & 2 | 0) == 0;
    $119 = ($113 & 4 | 0) == 0;
    $120 = $__v$i$i$i + 8 | 0;
    if ($63 >>> 0 < $70 >>> 0) $k$0560 = $63; else {
     $$0 = $64;
     break L1;
    }
    while (1) {
     if ($72) {
      $122 = HEAP32[$db >> 2] | 0;
      $123 = $122 + ($k$0560 * 24 | 0) + 12 | 0;
      $124 = HEAP8[$123 >> 0] | 0;
      $126 = ($124 & 1) == 0;
      if ($126) {
       $$in = ($124 & 255) >>> 1;
       $136 = $123 + 1 | 0;
      } else {
       $$in = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0;
       $136 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0;
      }
      $134 = $$in + -2 | 0;
      if ((HEAP8[$136 + $134 >> 0] | 0) == 38) $p$0 = $$in + -3 | 0; else {
       if ($126) {
        $147 = ($124 & 255) >>> 1;
        $149 = $123 + 1 | 0;
       } else {
        $147 = HEAP32[$122 + ($k$0560 * 24 | 0) + 16 >> 2] | 0;
        $149 = HEAP32[$122 + ($k$0560 * 24 | 0) + 20 >> 2] | 0;
       }
       $p$0 = (HEAP8[$149 + ($147 + -1) >> 0] | 0) == 38 ? $134 : $$in;
      }
      if ($115) $p$1 = $p$0; else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($123, $p$0, 12669) | 0;
       $p$1 = $p$0 + 6 | 0;
      }
      if ($117) $p$2 = $p$1; else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$1, 12676) | 0;
       $p$2 = $p$1 + 9 | 0;
      }
      if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) + 12 | 0, $p$2, 12686) | 0;
     } else {
      if (!$115) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12669) | 0;
      if (!$117) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12676) | 0;
      if (!$119) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k$0560 * 24 | 0) | 0, 12686) | 0;
     }
     $164 = HEAP32[$73 >> 2] | 0;
     $165 = $164 + -16 | 0;
     $166 = HEAP32[$db >> 2] | 0;
     $167 = $166 + ($k$0560 * 24 | 0) | 0;
     $168 = $164 + -12 | 0;
     $169 = HEAP32[$168 >> 2] | 0;
     if (($169 | 0) == (HEAP32[$164 + -8 >> 2] | 0)) {
      $181 = $169 - (HEAP32[$165 >> 2] | 0) | 0;
      $182 = ($181 | 0) / 24 | 0;
      $183 = $182 + 1 | 0;
      if (($181 | 0) < -24) {
       $$lcssa706 = $165;
       break;
      }
      if ($182 >>> 0 < 1073741823) {
       $186 = $182 << 1;
       $$0$i$i$i43 = $186 >>> 0 < $183 >>> 0 ? $183 : $186;
      } else $$0$i$i$i43 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i43, $182, $164 + -4 | 0);
      $189 = HEAP32[$120 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189, $167);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($189 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0);
      HEAP32[$120 >> 2] = $189 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($165, $__v$i$i$i);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169, $167);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($169 + 12 | 0, $166 + ($k$0560 * 24 | 0) + 12 | 0);
      HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 24;
     }
     $k$0560 = $k$0560 + 1 | 0;
     if ($k$0560 >>> 0 >= $70 >>> 0) {
      $$0 = $64;
      break L1;
     }
    }
    __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa706);
    break;
   }
  default:
   {}
  }
  $195 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
  if (($195 | 0) == ($first | 0)) {
   $197 = HEAP8[$first >> 0] | 0;
   L65 : do switch ($197 << 24 >> 24 | 0) {
   case 65:
    {
     do if ($197 << 24 >> 24 == 65) {
      $200 = $first + 1 | 0;
      if (($200 | 0) == ($last | 0)) $$0$i = $first; else {
       $202 = HEAP8[$200 >> 0] | 0;
       if ($202 << 24 >> 24 == 95) {
        $204 = $first + 2 | 0;
        $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($204, $last, $db) | 0;
        if (($205 | 0) == ($204 | 0)) {
         $$0$i = $first;
         break;
        }
        $208 = $db + 4 | 0;
        $209 = HEAP32[$208 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($209 | 0)) {
         $$0$i = $first;
         break;
        }
        $211 = $209 + -12 | 0;
        $212 = HEAP8[$211 >> 0] | 0;
        $214 = ($212 & 1) == 0;
        $219 = $214 ? ($212 & 255) >>> 1 : HEAP32[$209 + -8 >> 2] | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, $214 ? $211 + 1 | 0 : HEAP32[$209 + -4 >> 2] | 0, $219 >>> 0 < 2 ? $219 : 2);
        $226 = HEAP8[$__v$i$i$i >> 0] | 0;
        $228 = ($226 & 1) == 0;
        $233 = $228 ? ($226 & 255) >>> 1 : HEAP32[$__v$i$i$i + 4 >> 2] | 0;
        $238 = $233 >>> 0 > 2;
        $240 = _memcmp($228 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, 12696, $238 ? 2 : $233) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);
        if (!((($240 | 0) == 0 ? ($233 >>> 0 < 2 ? -1 : $238 & 1) : $240) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$208 >> 2] | 0) + -12 | 0);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$208 >> 2] | 0) + -12 | 0, 0, 12699) | 0;
        $$0$i = $205;
        break;
       }
       if (($202 + -49 & 255) < 9) {
        $250 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($200, $last) | 0;
        if (($250 | 0) == ($last | 0)) {
         $$0$i = $first;
         break;
        }
        if ((HEAP8[$250 >> 0] | 0) != 95) {
         $$0$i = $first;
         break;
        }
        $254 = $250 + 1 | 0;
        $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($254, $last, $db) | 0;
        if (($255 | 0) == ($254 | 0)) {
         $$0$i = $first;
         break;
        }
        $258 = $db + 4 | 0;
        $259 = HEAP32[$258 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($259 | 0)) {
         $$0$i = $first;
         break;
        }
        $261 = $259 + -12 | 0;
        $262 = HEAP8[$261 >> 0] | 0;
        $264 = ($262 & 1) == 0;
        $269 = $264 ? ($262 & 255) >>> 1 : HEAP32[$259 + -8 >> 2] | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $264 ? $261 + 1 | 0 : HEAP32[$259 + -4 >> 2] | 0, $269 >>> 0 < 2 ? $269 : 2);
        $276 = HEAP8[$0 >> 0] | 0;
        $278 = ($276 & 1) == 0;
        $283 = $278 ? ($276 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0;
        $288 = $283 >>> 0 > 2;
        $290 = _memcmp($278 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 12696, $288 ? 2 : $283) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
        if (!((($290 | 0) == 0 ? ($283 >>> 0 < 2 ? -1 : $288 & 1) : $290) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj((HEAP32[$258 >> 2] | 0) + -12 | 0);
        $298 = (HEAP32[$258 >> 2] | 0) + -12 | 0;
        $301 = $250 - $200 | 0;
        if ($301 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($3);
        if ($301 >>> 0 < 11) {
         HEAP8[$3 >> 0] = $301 << 1;
         $__p$0$ph$i$i$i = $3 + 1 | 0;
        } else {
         $308 = $301 + 16 & -16;
         $309 = _malloc($308) | 0;
         HEAP32[$3 + 8 >> 2] = $309;
         HEAP32[$3 >> 2] = $308 | 1;
         HEAP32[$3 + 4 >> 2] = $301;
         $__p$0$ph$i$i$i = $309;
        }
        if (($200 | 0) != ($250 | 0)) {
         $$0$i$i$i191509 = $200;
         $__p$0$i$i$i508 = $__p$0$ph$i$i$i;
         while (1) {
          HEAP8[$__p$0$i$i$i508 >> 0] = HEAP8[$$0$i$i$i191509 >> 0] | 0;
          $$0$i$i$i191509 = $$0$i$i$i191509 + 1 | 0;
          if (($$0$i$i$i191509 | 0) == ($250 | 0)) break; else $__p$0$i$i$i508 = $__p$0$i$i$i508 + 1 | 0;
         }
        }
        HEAP8[$__p$0$ph$i$i$i + $301 >> 0] = 0;
        $318 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12696) | 0;
        HEAP32[$2 >> 2] = HEAP32[$318 >> 2];
        HEAP32[$2 + 4 >> 2] = HEAP32[$318 + 4 >> 2];
        HEAP32[$2 + 8 >> 2] = HEAP32[$318 + 8 >> 2];
        HEAP32[$318 >> 2] = 0;
        HEAP32[$318 + 4 >> 2] = 0;
        HEAP32[$318 + 8 >> 2] = 0;
        $321 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12703) | 0;
        HEAP32[$1 >> 2] = HEAP32[$321 >> 2];
        HEAP32[$1 + 4 >> 2] = HEAP32[$321 + 4 >> 2];
        HEAP32[$1 + 8 >> 2] = HEAP32[$321 + 8 >> 2];
        HEAP32[$321 >> 2] = 0;
        HEAP32[$321 + 4 >> 2] = 0;
        HEAP32[$321 + 8 >> 2] = 0;
        $324 = HEAP8[$1 >> 0] | 0;
        $326 = ($324 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($298, 0, $326 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $326 ? ($324 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
        $$0$i = $255;
        break;
       }
       $336 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($200, $last, $db) | 0;
       if (($336 | 0) == ($200 | 0) | ($336 | 0) == ($last | 0)) $$0$i = $first; else if ((HEAP8[$336 >> 0] | 0) == 95) {
        $341 = $336 + 1 | 0;
        $342 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($341, $last, $db) | 0;
        if (($342 | 0) == ($341 | 0)) $$0$i = $first; else {
         $344 = $db + 4 | 0;
         $345 = HEAP32[$344 >> 2] | 0;
         if ((($345 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($4, $345 + -24 | 0);
          $353 = HEAP32[$344 >> 2] | 0;
          $354 = $353 + -24 | 0;
          $356 = $353;
          do {
           $355 = $356 + -24 | 0;
           HEAP32[$344 >> 2] = $355;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($355);
           $356 = HEAP32[$344 >> 2] | 0;
          } while (($356 | 0) != ($354 | 0));
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($5, $353 + -48 | 0);
          $359 = HEAP32[$344 >> 2] | 0;
          $360 = $359 + -24 | 0;
          do if (!(HEAP8[$360 >> 0] & 1)) {
           HEAP8[$360 + 1 >> 0] = 0;
           HEAP8[$360 >> 0] = 0;
          } else {
           $365 = $359 + -16 | 0;
           HEAP8[HEAP32[$365 >> 2] >> 0] = 0;
           $367 = $359 + -20 | 0;
           HEAP32[$367 >> 2] = 0;
           $$pre$i$i$i$i203 = HEAP8[$360 >> 0] | 0;
           if (!($$pre$i$i$i$i203 & 1)) {
            $374 = $$pre$i$i$i$i203;
            $383 = 10;
           } else {
            $370 = HEAP32[$360 >> 2] | 0;
            $374 = $370 & 255;
            $383 = ($370 & -2) + -1 | 0;
           }
           if (!($374 & 1)) {
            $377 = ($374 & 255) >>> 1;
            if (($374 & 255) < 22) {
             $2567 = 1;
             $382 = 10;
             $402 = $377;
            } else {
             $2567 = 1;
             $382 = ($377 + 16 & 240) + -1 | 0;
             $402 = $377;
            }
           } else {
            $2567 = 0;
            $382 = 10;
            $402 = 0;
           }
           if (($382 | 0) != ($383 | 0)) {
            if (($382 | 0) == 10) {
             $389 = $360 + 1 | 0;
             $390 = HEAP32[$365 >> 2] | 0;
             if ($2567) {
              _memcpy($389 | 0, $390 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0;
              _free($390);
             } else {
              HEAP8[$389 >> 0] = HEAP8[$390 >> 0] | 0;
              _free($390);
             }
             HEAP8[$360 >> 0] = $402 << 1;
             break;
            }
            $386 = $382 + 1 | 0;
            $387 = _malloc($386) | 0;
            if (!($382 >>> 0 <= $383 >>> 0 & ($387 | 0) == 0)) {
             if ($2567) _memcpy($387 | 0, $360 + 1 | 0, (($374 & 255) >>> 1) + 1 | 0) | 0; else {
              $399 = HEAP32[$365 >> 2] | 0;
              HEAP8[$387 >> 0] = HEAP8[$399 >> 0] | 0;
              _free($399);
             }
             HEAP32[$360 >> 2] = $386 | 1;
             HEAP32[$367 >> 2] = $402;
             HEAP32[$365 >> 2] = $387;
            }
           }
          } while (0);
          HEAP32[$360 >> 2] = HEAP32[$4 >> 2];
          HEAP32[$360 + 4 >> 2] = HEAP32[$4 + 4 >> 2];
          HEAP32[$360 + 8 >> 2] = HEAP32[$4 + 8 >> 2];
          HEAP32[$4 >> 2] = 0;
          HEAP32[$4 + 4 >> 2] = 0;
          HEAP32[$4 + 8 >> 2] = 0;
          $407 = $4 + 12 | 0;
          $408 = HEAP8[$407 >> 0] | 0;
          $410 = ($408 & 1) == 0;
          $411 = $4 + 16 | 0;
          $415 = $410 ? ($408 & 255) >>> 1 : HEAP32[$411 >> 2] | 0;
          $416 = $4 + 20 | 0;
          $418 = $407 + 1 | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $410 ? $418 : HEAP32[$416 >> 2] | 0, $415 >>> 0 < 2 ? $415 : 2);
          $422 = HEAP8[$6 >> 0] | 0;
          $424 = ($422 & 1) == 0;
          $429 = $424 ? ($422 & 255) >>> 1 : HEAP32[$6 + 4 >> 2] | 0;
          $434 = $429 >>> 0 > 2;
          $436 = _memcmp($424 ? $6 + 1 | 0 : HEAP32[$6 + 8 >> 2] | 0, 12696, $434 ? 2 : $429) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          if (!((($436 | 0) == 0 ? ($429 >>> 0 < 2 ? -1 : $434 & 1) : $436) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($407);
          $441 = HEAP32[$344 >> 2] | 0;
          $442 = $441 + -12 | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($9, $5);
          $443 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($9, 0, 12696) | 0;
          HEAP32[$8 >> 2] = HEAP32[$443 >> 2];
          HEAP32[$8 + 4 >> 2] = HEAP32[$443 + 4 >> 2];
          HEAP32[$8 + 8 >> 2] = HEAP32[$443 + 8 >> 2];
          HEAP32[$443 >> 2] = 0;
          HEAP32[$443 + 4 >> 2] = 0;
          HEAP32[$443 + 8 >> 2] = 0;
          $446 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 12703) | 0;
          HEAP32[$7 >> 2] = HEAP32[$446 >> 2];
          HEAP32[$7 + 4 >> 2] = HEAP32[$446 + 4 >> 2];
          HEAP32[$7 + 8 >> 2] = HEAP32[$446 + 8 >> 2];
          HEAP32[$446 >> 2] = 0;
          HEAP32[$446 + 4 >> 2] = 0;
          HEAP32[$446 + 8 >> 2] = 0;
          $449 = HEAP8[$407 >> 0] | 0;
          $451 = ($449 & 1) == 0;
          $458 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $451 ? $418 : HEAP32[$416 >> 2] | 0, $451 ? ($449 & 255) >>> 1 : HEAP32[$411 >> 2] | 0) | 0;
          HEAP32[$num1$i >> 2] = HEAP32[$458 >> 2];
          HEAP32[$num1$i + 4 >> 2] = HEAP32[$458 + 4 >> 2];
          HEAP32[$num1$i + 8 >> 2] = HEAP32[$458 + 8 >> 2];
          HEAP32[$458 >> 2] = 0;
          HEAP32[$458 + 4 >> 2] = 0;
          HEAP32[$458 + 8 >> 2] = 0;
          do if (!(HEAP8[$442 >> 0] & 1)) {
           HEAP8[$442 + 1 >> 0] = 0;
           HEAP8[$442 >> 0] = 0;
          } else {
           $465 = $441 + -4 | 0;
           HEAP8[HEAP32[$465 >> 2] >> 0] = 0;
           $467 = $441 + -8 | 0;
           HEAP32[$467 >> 2] = 0;
           $$pre$i$i$i36$i = HEAP8[$442 >> 0] | 0;
           if (!($$pre$i$i$i36$i & 1)) {
            $474 = $$pre$i$i$i36$i;
            $483 = 10;
           } else {
            $470 = HEAP32[$442 >> 2] | 0;
            $474 = $470 & 255;
            $483 = ($470 & -2) + -1 | 0;
           }
           do if (!($474 & 1)) {
            $477 = ($474 & 255) >>> 1;
            if (($474 & 255) < 22) {
             $2568 = 1;
             $482 = 10;
             $502 = $477;
             break;
            }
            $2568 = 1;
            $482 = ($477 + 16 & 240) + -1 | 0;
            $502 = $477;
           } else {
            $2568 = 0;
            $482 = 10;
            $502 = 0;
           } while (0);
           if (($482 | 0) != ($483 | 0)) {
            if (($482 | 0) == 10) {
             $489 = $442 + 1 | 0;
             $490 = HEAP32[$465 >> 2] | 0;
             if ($2568) {
              _memcpy($489 | 0, $490 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0;
              _free($490);
             } else {
              HEAP8[$489 >> 0] = HEAP8[$490 >> 0] | 0;
              _free($490);
             }
             HEAP8[$442 >> 0] = $502 << 1;
             break;
            }
            $486 = $482 + 1 | 0;
            $487 = _malloc($486) | 0;
            if ($482 >>> 0 <= $483 >>> 0 & ($487 | 0) == 0) break;
            if ($2568) _memcpy($487 | 0, $442 + 1 | 0, (($474 & 255) >>> 1) + 1 | 0) | 0; else {
             $499 = HEAP32[$465 >> 2] | 0;
             HEAP8[$487 >> 0] = HEAP8[$499 >> 0] | 0;
             _free($499);
            }
            HEAP32[$442 >> 2] = $486 | 1;
            HEAP32[$467 >> 2] = $502;
            HEAP32[$465 >> 2] = $487;
           }
          } while (0);
          HEAP32[$442 >> 2] = HEAP32[$num1$i >> 2];
          HEAP32[$442 + 4 >> 2] = HEAP32[$num1$i + 4 >> 2];
          HEAP32[$442 + 8 >> 2] = HEAP32[$num1$i + 8 >> 2];
          HEAP32[$num1$i >> 2] = 0;
          HEAP32[$num1$i + 4 >> 2] = 0;
          HEAP32[$num1$i + 8 >> 2] = 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);
          $$0$i = $342;
         }
        }
       } else $$0$i = $first;
      }
     } else $$0$i = $first; while (0);
     if (($$0$i | 0) == ($first | 0)) {
      $$0 = $first;
      break L1;
     }
     $510 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($510 | 0)) {
      $$0 = $first;
      break L1;
     }
     $512 = $db + 16 | 0;
     HEAP32[$11 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($10, $510 + -24 | 0, $11);
     $516 = $db + 20 | 0;
     $517 = HEAP32[$516 >> 2] | 0;
     $519 = HEAP32[$db + 24 >> 2] | 0;
     if ($517 >>> 0 < $519 >>> 0) {
      HEAP32[$517 + 12 >> 2] = HEAP32[$10 + 12 >> 2];
      HEAP32[$517 >> 2] = HEAP32[$10 >> 2];
      $526 = $10 + 4 | 0;
      HEAP32[$517 + 4 >> 2] = HEAP32[$526 >> 2];
      $528 = $10 + 8 | 0;
      HEAP32[$517 + 8 >> 2] = HEAP32[$528 >> 2];
      HEAP32[$528 >> 2] = 0;
      HEAP32[$526 >> 2] = 0;
      HEAP32[$10 >> 2] = 0;
      HEAP32[$516 >> 2] = (HEAP32[$516 >> 2] | 0) + 16;
     } else {
      $536 = HEAP32[$512 >> 2] | 0;
      $537 = $517 - $536 | 0;
      $538 = $537 >> 4;
      $539 = $538 + 1 | 0;
      if (($537 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($512);
      $542 = $519 - $536 | 0;
      if ($542 >> 4 >>> 0 < 1073741823) {
       $545 = $542 >> 3;
       $$0$i$i$i56 = $545 >>> 0 < $539 >>> 0 ? $539 : $545;
      } else $$0$i$i$i56 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i56, $538, $db + 28 | 0);
      $548 = $__v$i$i$i + 8 | 0;
      $549 = HEAP32[$548 >> 2] | 0;
      HEAP32[$549 + 12 >> 2] = HEAP32[$10 + 12 >> 2];
      HEAP32[$549 >> 2] = HEAP32[$10 >> 2];
      $555 = $10 + 4 | 0;
      HEAP32[$549 + 4 >> 2] = HEAP32[$555 >> 2];
      $557 = $10 + 8 | 0;
      HEAP32[$549 + 8 >> 2] = HEAP32[$557 >> 2];
      HEAP32[$557 >> 2] = 0;
      HEAP32[$555 >> 2] = 0;
      HEAP32[$10 >> 2] = 0;
      HEAP32[$548 >> 2] = $549 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($512, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($10);
     $$0 = $$0$i;
     break L1;
     break;
    }
   case 67:
    {
     $561 = $first + 1 | 0;
     $562 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($561, $last, $db) | 0;
     if (($562 | 0) == ($561 | 0)) {
      $$0 = $first;
      break L1;
     }
     $565 = $db + 4 | 0;
     $566 = HEAP32[$565 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($566 | 0)) {
      $$0 = $first;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($566 + -24 | 0, 12705) | 0;
     $569 = $db + 16 | 0;
     $571 = (HEAP32[$565 >> 2] | 0) + -24 | 0;
     HEAP32[$13 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $571, $13);
     $574 = $db + 20 | 0;
     $575 = HEAP32[$574 >> 2] | 0;
     $577 = HEAP32[$db + 24 >> 2] | 0;
     if ($575 >>> 0 < $577 >>> 0) {
      HEAP32[$575 + 12 >> 2] = HEAP32[$12 + 12 >> 2];
      HEAP32[$575 >> 2] = HEAP32[$12 >> 2];
      $584 = $12 + 4 | 0;
      HEAP32[$575 + 4 >> 2] = HEAP32[$584 >> 2];
      $586 = $12 + 8 | 0;
      HEAP32[$575 + 8 >> 2] = HEAP32[$586 >> 2];
      HEAP32[$586 >> 2] = 0;
      HEAP32[$584 >> 2] = 0;
      HEAP32[$12 >> 2] = 0;
      HEAP32[$574 >> 2] = (HEAP32[$574 >> 2] | 0) + 16;
     } else {
      $594 = HEAP32[$569 >> 2] | 0;
      $595 = $575 - $594 | 0;
      $596 = $595 >> 4;
      $597 = $596 + 1 | 0;
      if (($595 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($569);
      $600 = $577 - $594 | 0;
      if ($600 >> 4 >>> 0 < 1073741823) {
       $603 = $600 >> 3;
       $$0$i$i$i61 = $603 >>> 0 < $597 >>> 0 ? $597 : $603;
      } else $$0$i$i$i61 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i61, $596, $db + 28 | 0);
      $606 = $__v$i$i$i + 8 | 0;
      $607 = HEAP32[$606 >> 2] | 0;
      HEAP32[$607 + 12 >> 2] = HEAP32[$12 + 12 >> 2];
      HEAP32[$607 >> 2] = HEAP32[$12 >> 2];
      $613 = $12 + 4 | 0;
      HEAP32[$607 + 4 >> 2] = HEAP32[$613 >> 2];
      $615 = $12 + 8 | 0;
      HEAP32[$607 + 8 >> 2] = HEAP32[$615 >> 2];
      HEAP32[$615 >> 2] = 0;
      HEAP32[$613 >> 2] = 0;
      HEAP32[$12 >> 2] = 0;
      HEAP32[$606 >> 2] = $607 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($569, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12);
     $$0 = $562;
     break L1;
     break;
    }
   case 70:
    {
     do if ($197 << 24 >> 24 == 70) {
      $620 = $first + 1 | 0;
      if (($620 | 0) != ($last | 0)) {
       if ((HEAP8[$620 >> 0] | 0) == 89) {
        $624 = $first + 2 | 0;
        if (($624 | 0) == ($last | 0)) break; else $t$0$i = $624;
       } else $t$0$i = $620;
       $626 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$0$i, $last, $db) | 0;
       if (($626 | 0) != ($t$0$i | 0)) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($__v$i$i$i, 12714, 1);
        $628 = $db + 4 | 0;
        $629 = $__v$i$i$i + 4 | 0;
        $630 = $0 + 8 | 0;
        $631 = $0 + 1 | 0;
        $632 = $0 + 4 | 0;
        L191 : do if (($626 | 0) == ($last | 0)) label = 144; else {
         $ref_qual$0$i$ph521 = 0;
         $t$1$i$ph520 = $626;
         L192 : while (1) {
          $t$1$i518 = $t$1$i$ph520;
          L194 : while (1) {
           switch (HEAP8[$t$1$i518 >> 0] | 0) {
           case 69:
            {
             $ref_qual$0$i$ph521$lcssa = $ref_qual$0$i$ph521;
             $t$1$i518$lcssa = $t$1$i518;
             break L192;
             break;
            }
           case 118:
            {
             $t$1$i$be = $t$1$i518 + 1 | 0;
             break;
            }
           case 82:
            {
             $644 = $t$1$i518 + 1 | 0;
             if (($644 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$644 >> 0] | 0) == 69) {
              $ref_qual$0$i$ph$ph = 1;
              $t$1$i$ph$ph = $644;
              break L194;
             } else label = 154;
             break;
            }
           case 79:
            {
             $648 = $t$1$i518 + 1 | 0;
             if (($648 | 0) == ($last | 0)) label = 154; else if ((HEAP8[$648 >> 0] | 0) == 69) {
              $ref_qual$0$i$ph$ph = 2;
              $t$1$i$ph$ph = $648;
              break L194;
             } else label = 154;
             break;
            }
           default:
            label = 154;
           }
           if ((label | 0) == 154) {
            label = 0;
            $657 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
            $658 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1$i518, $last, $db) | 0;
            $664 = ((HEAP32[$628 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
            if (($658 | 0) == ($t$1$i518 | 0) | ($658 | 0) == ($last | 0)) break L191;
            if ($657 >>> 0 < $664 >>> 0) {
             $k$0$i515 = $657;
             do {
              $669 = HEAP8[$__v$i$i$i >> 0] | 0;
              if ((($669 & 1) == 0 ? ($669 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12716) | 0;
              __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k$0$i515 * 24 | 0) | 0);
              $679 = HEAP8[$0 >> 0] | 0;
              $681 = ($679 & 1) == 0;
              __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($__v$i$i$i, $681 ? $631 : HEAP32[$630 >> 2] | 0, $681 ? ($679 & 255) >>> 1 : HEAP32[$632 >> 2] | 0) | 0;
              __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
              $k$0$i515 = $k$0$i515 + 1 | 0;
             } while ($k$0$i515 >>> 0 < $664 >>> 0);
            }
            if ($657 >>> 0 < $664 >>> 0) {
             $k2$0$i516 = $657;
             do {
              $690 = HEAP32[$628 >> 2] | 0;
              $691 = $690 + -24 | 0;
              $693 = $690;
              do {
               $692 = $693 + -24 | 0;
               HEAP32[$628 >> 2] = $692;
               __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($692);
               $693 = HEAP32[$628 >> 2] | 0;
              } while (($693 | 0) != ($691 | 0));
              $k2$0$i516 = $k2$0$i516 + 1 | 0;
             } while ($k2$0$i516 >>> 0 < $664 >>> 0);
             $t$1$i$be = $658;
            } else $t$1$i$be = $658;
           }
           if (($t$1$i$be | 0) == ($last | 0)) {
            label = 144;
            break L191;
           } else $t$1$i518 = $t$1$i$be;
          }
          if (($t$1$i$ph$ph | 0) == ($last | 0)) {
           label = 144;
           break L191;
          } else {
           $ref_qual$0$i$ph521 = $ref_qual$0$i$ph$ph;
           $t$1$i$ph520 = $t$1$i$ph$ph;
          }
         }
         $641 = $t$1$i518$lcssa + 1 | 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12619) | 0;
         switch ($ref_qual$0$i$ph521$lcssa | 0) {
         case 1:
          {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12719) | 0;
           break;
          }
         case 2:
          {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12722) | 0;
           break;
          }
         default:
          {}
         }
         $698 = HEAP32[$628 >> 2] | 0;
         if ((HEAP32[$db >> 2] | 0) != ($698 | 0)) {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($698 + -24 | 0, 12726) | 0;
          $703 = HEAP8[$__v$i$i$i >> 0] | 0;
          $705 = ($703 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj((HEAP32[$628 >> 2] | 0) + -12 | 0, 0, $705 ? $__v$i$i$i + 1 | 0 : HEAP32[$__v$i$i$i + 8 >> 2] | 0, $705 ? ($703 & 255) >>> 1 : HEAP32[$629 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);
          if (($641 | 0) == ($first | 0)) {
           $$0 = $first;
           break L1;
          }
          $716 = HEAP32[$628 >> 2] | 0;
          if ((HEAP32[$db >> 2] | 0) == ($716 | 0)) {
           $$0 = $first;
           break L1;
          }
          $718 = $db + 16 | 0;
          HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2];
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $716 + -24 | 0, $15);
          $722 = $db + 20 | 0;
          $723 = HEAP32[$722 >> 2] | 0;
          $725 = HEAP32[$db + 24 >> 2] | 0;
          if ($723 >>> 0 < $725 >>> 0) {
           HEAP32[$723 + 12 >> 2] = HEAP32[$14 + 12 >> 2];
           HEAP32[$723 >> 2] = HEAP32[$14 >> 2];
           $732 = $14 + 4 | 0;
           HEAP32[$723 + 4 >> 2] = HEAP32[$732 >> 2];
           $734 = $14 + 8 | 0;
           HEAP32[$723 + 8 >> 2] = HEAP32[$734 >> 2];
           HEAP32[$734 >> 2] = 0;
           HEAP32[$732 >> 2] = 0;
           HEAP32[$14 >> 2] = 0;
           HEAP32[$722 >> 2] = (HEAP32[$722 >> 2] | 0) + 16;
          } else {
           $742 = HEAP32[$718 >> 2] | 0;
           $743 = $723 - $742 | 0;
           $744 = $743 >> 4;
           $745 = $744 + 1 | 0;
           if (($743 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($718);
           $748 = $725 - $742 | 0;
           if ($748 >> 4 >>> 0 < 1073741823) {
            $751 = $748 >> 3;
            $$0$i$i$i66 = $751 >>> 0 < $745 >>> 0 ? $745 : $751;
           } else $$0$i$i$i66 = 2147483647;
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i66, $744, $db + 28 | 0);
           $754 = $__v$i$i$i + 8 | 0;
           $755 = HEAP32[$754 >> 2] | 0;
           HEAP32[$755 + 12 >> 2] = HEAP32[$14 + 12 >> 2];
           HEAP32[$755 >> 2] = HEAP32[$14 >> 2];
           $761 = $14 + 4 | 0;
           HEAP32[$755 + 4 >> 2] = HEAP32[$761 >> 2];
           $763 = $14 + 8 | 0;
           HEAP32[$755 + 8 >> 2] = HEAP32[$763 >> 2];
           HEAP32[$763 >> 2] = 0;
           HEAP32[$761 >> 2] = 0;
           HEAP32[$14 >> 2] = 0;
           HEAP32[$754 >> 2] = $755 + 16;
           __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($718, $__v$i$i$i);
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
          }
          __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14);
          $$0 = $641;
          break L1;
         }
        } while (0);
        if ((label | 0) == 144) {
         $635 = HEAP32[$628 >> 2] | 0;
         $636 = $635 + -24 | 0;
         $638 = $635;
         do {
          $637 = $638 + -24 | 0;
          HEAP32[$628 >> 2] = $637;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($637);
          $638 = HEAP32[$628 >> 2] | 0;
         } while (($638 | 0) != ($636 | 0));
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i$i);
       }
      }
     } while (0);
     $$0 = $first;
     break L1;
     break;
    }
   case 71:
    {
     $767 = $first + 1 | 0;
     $768 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($767, $last, $db) | 0;
     if (($768 | 0) == ($767 | 0)) {
      $$0 = $first;
      break L1;
     }
     $771 = $db + 4 | 0;
     $772 = HEAP32[$771 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($772 | 0)) {
      $$0 = $first;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($772 + -24 | 0, 12728) | 0;
     $775 = $db + 16 | 0;
     $777 = (HEAP32[$771 >> 2] | 0) + -24 | 0;
     HEAP32[$17 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($16, $777, $17);
     $780 = $db + 20 | 0;
     $781 = HEAP32[$780 >> 2] | 0;
     $783 = HEAP32[$db + 24 >> 2] | 0;
     if ($781 >>> 0 < $783 >>> 0) {
      HEAP32[$781 + 12 >> 2] = HEAP32[$16 + 12 >> 2];
      HEAP32[$781 >> 2] = HEAP32[$16 >> 2];
      $790 = $16 + 4 | 0;
      HEAP32[$781 + 4 >> 2] = HEAP32[$790 >> 2];
      $792 = $16 + 8 | 0;
      HEAP32[$781 + 8 >> 2] = HEAP32[$792 >> 2];
      HEAP32[$792 >> 2] = 0;
      HEAP32[$790 >> 2] = 0;
      HEAP32[$16 >> 2] = 0;
      HEAP32[$780 >> 2] = (HEAP32[$780 >> 2] | 0) + 16;
     } else {
      $800 = HEAP32[$775 >> 2] | 0;
      $801 = $781 - $800 | 0;
      $802 = $801 >> 4;
      $803 = $802 + 1 | 0;
      if (($801 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($775);
      $806 = $783 - $800 | 0;
      if ($806 >> 4 >>> 0 < 1073741823) {
       $809 = $806 >> 3;
       $$0$i$i$i71 = $809 >>> 0 < $803 >>> 0 ? $803 : $809;
      } else $$0$i$i$i71 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i71, $802, $db + 28 | 0);
      $812 = $__v$i$i$i + 8 | 0;
      $813 = HEAP32[$812 >> 2] | 0;
      HEAP32[$813 + 12 >> 2] = HEAP32[$16 + 12 >> 2];
      HEAP32[$813 >> 2] = HEAP32[$16 >> 2];
      $819 = $16 + 4 | 0;
      HEAP32[$813 + 4 >> 2] = HEAP32[$819 >> 2];
      $821 = $16 + 8 | 0;
      HEAP32[$813 + 8 >> 2] = HEAP32[$821 >> 2];
      HEAP32[$821 >> 2] = 0;
      HEAP32[$819 >> 2] = 0;
      HEAP32[$16 >> 2] = 0;
      HEAP32[$812 >> 2] = $813 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($775, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($16);
     $$0 = $768;
     break L1;
     break;
    }
   case 77:
    {
     if ($197 << 24 >> 24 == 77) {
      $826 = $first + 1 | 0;
      $827 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($826, $last, $db) | 0;
      if (($827 | 0) == ($826 | 0)) $$08$i = $first; else {
       $829 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($827, $last, $db) | 0;
       if (($829 | 0) == ($827 | 0)) $$08$i = $first; else {
        $831 = $db + 4 | 0;
        $832 = HEAP32[$831 >> 2] | 0;
        if ((($832 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$08$i = $first; else {
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($__v$i$i$i, $832 + -24 | 0);
         $840 = HEAP32[$831 >> 2] | 0;
         $841 = $840 + -24 | 0;
         $843 = $840;
         do {
          $842 = $843 + -24 | 0;
          HEAP32[$831 >> 2] = $842;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($842);
          $843 = HEAP32[$831 >> 2] | 0;
         } while (($843 | 0) != ($841 | 0));
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($0, $840 + -48 | 0);
         $846 = $__v$i$i$i + 12 | 0;
         $856 = HEAP32[$831 >> 2] | 0;
         $857 = $856 + -24 | 0;
         if ((HEAP8[((HEAP8[$846 >> 0] & 1) == 0 ? $846 + 1 | 0 : HEAP32[$__v$i$i$i + 20 >> 2] | 0) >> 0] | 0) == 40) {
          $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12714) | 0;
          HEAP32[$3 >> 2] = HEAP32[$858 >> 2];
          HEAP32[$3 + 4 >> 2] = HEAP32[$858 + 4 >> 2];
          HEAP32[$3 + 8 >> 2] = HEAP32[$858 + 8 >> 2];
          HEAP32[$858 >> 2] = 0;
          HEAP32[$858 + 4 >> 2] = 0;
          HEAP32[$858 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $0);
          $861 = HEAP8[$4 >> 0] | 0;
          $863 = ($861 & 1) == 0;
          $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($3, $863 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0;
          HEAP32[$2 >> 2] = HEAP32[$873 >> 2];
          HEAP32[$2 + 4 >> 2] = HEAP32[$873 + 4 >> 2];
          HEAP32[$2 + 8 >> 2] = HEAP32[$873 + 8 >> 2];
          HEAP32[$873 >> 2] = 0;
          HEAP32[$873 + 4 >> 2] = 0;
          HEAP32[$873 + 8 >> 2] = 0;
          $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12739) | 0;
          HEAP32[$1 >> 2] = HEAP32[$876 >> 2];
          HEAP32[$1 + 4 >> 2] = HEAP32[$876 + 4 >> 2];
          HEAP32[$1 + 8 >> 2] = HEAP32[$876 + 8 >> 2];
          HEAP32[$876 >> 2] = 0;
          HEAP32[$876 + 4 >> 2] = 0;
          HEAP32[$876 + 8 >> 2] = 0;
          do if (!(HEAP8[$857 >> 0] & 1)) {
           HEAP8[$857 + 1 >> 0] = 0;
           HEAP8[$857 >> 0] = 0;
          } else {
           $883 = $856 + -16 | 0;
           HEAP8[HEAP32[$883 >> 2] >> 0] = 0;
           $885 = $856 + -20 | 0;
           HEAP32[$885 >> 2] = 0;
           $$pre$i$i$i$i = HEAP8[$857 >> 0] | 0;
           if (!($$pre$i$i$i$i & 1)) {
            $892 = $$pre$i$i$i$i;
            $901 = 10;
           } else {
            $888 = HEAP32[$857 >> 2] | 0;
            $892 = $888 & 255;
            $901 = ($888 & -2) + -1 | 0;
           }
           if (!($892 & 1)) {
            $895 = ($892 & 255) >>> 1;
            if (($892 & 255) < 22) {
             $2569 = 1;
             $900 = 10;
             $920 = $895;
            } else {
             $2569 = 1;
             $900 = ($895 + 16 & 240) + -1 | 0;
             $920 = $895;
            }
           } else {
            $2569 = 0;
            $900 = 10;
            $920 = 0;
           }
           if (($900 | 0) != ($901 | 0)) {
            if (($900 | 0) == 10) {
             $907 = $857 + 1 | 0;
             $908 = HEAP32[$883 >> 2] | 0;
             if ($2569) {
              _memcpy($907 | 0, $908 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0;
              _free($908);
             } else {
              HEAP8[$907 >> 0] = HEAP8[$908 >> 0] | 0;
              _free($908);
             }
             HEAP8[$857 >> 0] = $920 << 1;
             break;
            }
            $904 = $900 + 1 | 0;
            $905 = _malloc($904) | 0;
            if (!($900 >>> 0 <= $901 >>> 0 & ($905 | 0) == 0)) {
             if ($2569) _memcpy($905 | 0, $857 + 1 | 0, (($892 & 255) >>> 1) + 1 | 0) | 0; else {
              $917 = HEAP32[$883 >> 2] | 0;
              HEAP8[$905 >> 0] = HEAP8[$917 >> 0] | 0;
              _free($917);
             }
             HEAP32[$857 >> 2] = $904 | 1;
             HEAP32[$885 >> 2] = $920;
             HEAP32[$883 >> 2] = $905;
            }
           }
          } while (0);
          HEAP32[$857 >> 2] = HEAP32[$1 >> 2];
          HEAP32[$857 + 4 >> 2] = HEAP32[$1 + 4 >> 2];
          HEAP32[$857 + 8 >> 2] = HEAP32[$1 + 8 >> 2];
          HEAP32[$1 >> 2] = 0;
          HEAP32[$1 + 4 >> 2] = 0;
          HEAP32[$1 + 8 >> 2] = 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
          $925 = HEAP32[$831 >> 2] | 0;
          $926 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($846, 0, 12619) | 0;
          HEAP32[$5 >> 2] = HEAP32[$926 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$926 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$926 + 8 >> 2];
          HEAP32[$926 >> 2] = 0;
          HEAP32[$926 + 4 >> 2] = 0;
          HEAP32[$926 + 8 >> 2] = 0;
          $929 = $925 + -12 | 0;
          do if (!(HEAP8[$929 >> 0] & 1)) {
           HEAP8[$929 + 1 >> 0] = 0;
           HEAP8[$929 >> 0] = 0;
          } else {
           $934 = $925 + -4 | 0;
           HEAP8[HEAP32[$934 >> 2] >> 0] = 0;
           $936 = $925 + -8 | 0;
           HEAP32[$936 >> 2] = 0;
           $$pre$i$i$i21$i = HEAP8[$929 >> 0] | 0;
           if (!($$pre$i$i$i21$i & 1)) {
            $943 = $$pre$i$i$i21$i;
            $952 = 10;
           } else {
            $939 = HEAP32[$929 >> 2] | 0;
            $943 = $939 & 255;
            $952 = ($939 & -2) + -1 | 0;
           }
           if (!($943 & 1)) {
            $946 = ($943 & 255) >>> 1;
            if (($943 & 255) < 22) {
             $2570 = 1;
             $951 = 10;
             $971 = $946;
            } else {
             $2570 = 1;
             $951 = ($946 + 16 & 240) + -1 | 0;
             $971 = $946;
            }
           } else {
            $2570 = 0;
            $951 = 10;
            $971 = 0;
           }
           if (($951 | 0) != ($952 | 0)) {
            if (($951 | 0) == 10) {
             $958 = $929 + 1 | 0;
             $959 = HEAP32[$934 >> 2] | 0;
             if ($2570) {
              _memcpy($958 | 0, $959 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0;
              _free($959);
             } else {
              HEAP8[$958 >> 0] = HEAP8[$959 >> 0] | 0;
              _free($959);
             }
             HEAP8[$929 >> 0] = $971 << 1;
             break;
            }
            $955 = $951 + 1 | 0;
            $956 = _malloc($955) | 0;
            if (!($951 >>> 0 <= $952 >>> 0 & ($956 | 0) == 0)) {
             if ($2570) _memcpy($956 | 0, $929 + 1 | 0, (($943 & 255) >>> 1) + 1 | 0) | 0; else {
              $968 = HEAP32[$934 >> 2] | 0;
              HEAP8[$956 >> 0] = HEAP8[$968 >> 0] | 0;
              _free($968);
             }
             HEAP32[$929 >> 2] = $955 | 1;
             HEAP32[$936 >> 2] = $971;
             HEAP32[$934 >> 2] = $956;
            }
           }
          } while (0);
          HEAP32[$929 >> 2] = HEAP32[$5 >> 2];
          HEAP32[$929 + 4 >> 2] = HEAP32[$5 + 4 >> 2];
          HEAP32[$929 + 8 >> 2] = HEAP32[$5 + 8 >> 2];
          HEAP32[$5 >> 2] = 0;
          HEAP32[$5 + 4 >> 2] = 0;
          HEAP32[$5 + 8 >> 2] = 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
         } else {
          $976 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($__v$i$i$i, 12726) | 0;
          HEAP32[$7 >> 2] = HEAP32[$976 >> 2];
          HEAP32[$7 + 4 >> 2] = HEAP32[$976 + 4 >> 2];
          HEAP32[$7 + 8 >> 2] = HEAP32[$976 + 8 >> 2];
          HEAP32[$976 >> 2] = 0;
          HEAP32[$976 + 4 >> 2] = 0;
          HEAP32[$976 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($8, $0);
          $979 = HEAP8[$8 >> 0] | 0;
          $981 = ($979 & 1) == 0;
          $991 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($7, $981 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $981 ? ($979 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0;
          HEAP32[$num1$i >> 2] = HEAP32[$991 >> 2];
          HEAP32[$num1$i + 4 >> 2] = HEAP32[$991 + 4 >> 2];
          HEAP32[$num1$i + 8 >> 2] = HEAP32[$991 + 8 >> 2];
          HEAP32[$991 >> 2] = 0;
          HEAP32[$991 + 4 >> 2] = 0;
          HEAP32[$991 + 8 >> 2] = 0;
          $994 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($num1$i, 12739) | 0;
          HEAP32[$6 >> 2] = HEAP32[$994 >> 2];
          HEAP32[$6 + 4 >> 2] = HEAP32[$994 + 4 >> 2];
          HEAP32[$6 + 8 >> 2] = HEAP32[$994 + 8 >> 2];
          HEAP32[$994 >> 2] = 0;
          HEAP32[$994 + 4 >> 2] = 0;
          HEAP32[$994 + 8 >> 2] = 0;
          do if (!(HEAP8[$857 >> 0] & 1)) {
           HEAP8[$857 + 1 >> 0] = 0;
           HEAP8[$857 >> 0] = 0;
          } else {
           $1001 = $856 + -16 | 0;
           HEAP8[HEAP32[$1001 >> 2] >> 0] = 0;
           $1003 = $856 + -20 | 0;
           HEAP32[$1003 >> 2] = 0;
           $$pre$i$i$i52$i = HEAP8[$857 >> 0] | 0;
           if (!($$pre$i$i$i52$i & 1)) {
            $1010 = $$pre$i$i$i52$i;
            $1019 = 10;
           } else {
            $1006 = HEAP32[$857 >> 2] | 0;
            $1010 = $1006 & 255;
            $1019 = ($1006 & -2) + -1 | 0;
           }
           if (!($1010 & 1)) {
            $1013 = ($1010 & 255) >>> 1;
            if (($1010 & 255) < 22) {
             $1018 = 10;
             $1038 = $1013;
             $2571 = 1;
            } else {
             $1018 = ($1013 + 16 & 240) + -1 | 0;
             $1038 = $1013;
             $2571 = 1;
            }
           } else {
            $1018 = 10;
            $1038 = 0;
            $2571 = 0;
           }
           if (($1018 | 0) != ($1019 | 0)) {
            if (($1018 | 0) == 10) {
             $1025 = $857 + 1 | 0;
             $1026 = HEAP32[$1001 >> 2] | 0;
             if ($2571) {
              _memcpy($1025 | 0, $1026 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0;
              _free($1026);
             } else {
              HEAP8[$1025 >> 0] = HEAP8[$1026 >> 0] | 0;
              _free($1026);
             }
             HEAP8[$857 >> 0] = $1038 << 1;
             break;
            }
            $1022 = $1018 + 1 | 0;
            $1023 = _malloc($1022) | 0;
            if (!($1018 >>> 0 <= $1019 >>> 0 & ($1023 | 0) == 0)) {
             if ($2571) _memcpy($1023 | 0, $857 + 1 | 0, (($1010 & 255) >>> 1) + 1 | 0) | 0; else {
              $1035 = HEAP32[$1001 >> 2] | 0;
              HEAP8[$1023 >> 0] = HEAP8[$1035 >> 0] | 0;
              _free($1035);
             }
             HEAP32[$857 >> 2] = $1022 | 1;
             HEAP32[$1003 >> 2] = $1038;
             HEAP32[$1001 >> 2] = $1023;
            }
           }
          } while (0);
          HEAP32[$857 >> 2] = HEAP32[$6 >> 2];
          HEAP32[$857 + 4 >> 2] = HEAP32[$6 + 4 >> 2];
          HEAP32[$857 + 8 >> 2] = HEAP32[$6 + 8 >> 2];
          HEAP32[$6 >> 2] = 0;
          HEAP32[$6 + 4 >> 2] = 0;
          HEAP32[$6 + 8 >> 2] = 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
          $1043 = HEAP32[$831 >> 2] | 0;
          $1044 = $1043 + -12 | 0;
          do if (!(HEAP8[$1044 >> 0] & 1)) {
           HEAP8[$1044 + 1 >> 0] = 0;
           HEAP8[$1044 >> 0] = 0;
          } else {
           $1049 = $1043 + -4 | 0;
           HEAP8[HEAP32[$1049 >> 2] >> 0] = 0;
           $1051 = $1043 + -8 | 0;
           HEAP32[$1051 >> 2] = 0;
           $$pre$i$i$i71$i = HEAP8[$1044 >> 0] | 0;
           if (!($$pre$i$i$i71$i & 1)) {
            $1058 = $$pre$i$i$i71$i;
            $1067 = 10;
           } else {
            $1054 = HEAP32[$1044 >> 2] | 0;
            $1058 = $1054 & 255;
            $1067 = ($1054 & -2) + -1 | 0;
           }
           if (!($1058 & 1)) {
            $1061 = ($1058 & 255) >>> 1;
            if (($1058 & 255) < 22) {
             $1066 = 10;
             $1086 = $1061;
             $2572 = 1;
            } else {
             $1066 = ($1061 + 16 & 240) + -1 | 0;
             $1086 = $1061;
             $2572 = 1;
            }
           } else {
            $1066 = 10;
            $1086 = 0;
            $2572 = 0;
           }
           if (($1066 | 0) != ($1067 | 0)) {
            if (($1066 | 0) == 10) {
             $1073 = $1044 + 1 | 0;
             $1074 = HEAP32[$1049 >> 2] | 0;
             if ($2572) {
              _memcpy($1073 | 0, $1074 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0;
              _free($1074);
             } else {
              HEAP8[$1073 >> 0] = HEAP8[$1074 >> 0] | 0;
              _free($1074);
             }
             HEAP8[$1044 >> 0] = $1086 << 1;
             break;
            }
            $1070 = $1066 + 1 | 0;
            $1071 = _malloc($1070) | 0;
            if (!($1066 >>> 0 <= $1067 >>> 0 & ($1071 | 0) == 0)) {
             if ($2572) _memcpy($1071 | 0, $1044 + 1 | 0, (($1058 & 255) >>> 1) + 1 | 0) | 0; else {
              $1083 = HEAP32[$1049 >> 2] | 0;
              HEAP8[$1071 >> 0] = HEAP8[$1083 >> 0] | 0;
              _free($1083);
             }
             HEAP32[$1044 >> 2] = $1070 | 1;
             HEAP32[$1051 >> 2] = $1086;
             HEAP32[$1049 >> 2] = $1071;
            }
           }
          } while (0);
          HEAP32[$1044 >> 2] = HEAP32[$846 >> 2];
          HEAP32[$1044 + 4 >> 2] = HEAP32[$846 + 4 >> 2];
          HEAP32[$1044 + 8 >> 2] = HEAP32[$846 + 8 >> 2];
          HEAP32[$846 >> 2] = 0;
          HEAP32[$846 + 4 >> 2] = 0;
          HEAP32[$846 + 8 >> 2] = 0;
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($__v$i$i$i);
         $$08$i = $829;
        }
       }
      }
     } else $$08$i = $first;
     if (($$08$i | 0) == ($first | 0)) {
      $$0 = $first;
      break L1;
     }
     $1094 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($1094 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1096 = $db + 16 | 0;
     HEAP32[$19 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($18, $1094 + -24 | 0, $19);
     $1100 = $db + 20 | 0;
     $1101 = HEAP32[$1100 >> 2] | 0;
     $1103 = HEAP32[$db + 24 >> 2] | 0;
     if ($1101 >>> 0 < $1103 >>> 0) {
      HEAP32[$1101 + 12 >> 2] = HEAP32[$18 + 12 >> 2];
      HEAP32[$1101 >> 2] = HEAP32[$18 >> 2];
      $1110 = $18 + 4 | 0;
      HEAP32[$1101 + 4 >> 2] = HEAP32[$1110 >> 2];
      $1112 = $18 + 8 | 0;
      HEAP32[$1101 + 8 >> 2] = HEAP32[$1112 >> 2];
      HEAP32[$1112 >> 2] = 0;
      HEAP32[$1110 >> 2] = 0;
      HEAP32[$18 >> 2] = 0;
      HEAP32[$1100 >> 2] = (HEAP32[$1100 >> 2] | 0) + 16;
     } else {
      $1120 = HEAP32[$1096 >> 2] | 0;
      $1121 = $1101 - $1120 | 0;
      $1122 = $1121 >> 4;
      $1123 = $1122 + 1 | 0;
      if (($1121 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1096);
      $1126 = $1103 - $1120 | 0;
      if ($1126 >> 4 >>> 0 < 1073741823) {
       $1129 = $1126 >> 3;
       $$0$i$i$i76 = $1129 >>> 0 < $1123 >>> 0 ? $1123 : $1129;
      } else $$0$i$i$i76 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i76, $1122, $db + 28 | 0);
      $1132 = $__v$i$i$i + 8 | 0;
      $1133 = HEAP32[$1132 >> 2] | 0;
      HEAP32[$1133 + 12 >> 2] = HEAP32[$18 + 12 >> 2];
      HEAP32[$1133 >> 2] = HEAP32[$18 >> 2];
      $1139 = $18 + 4 | 0;
      HEAP32[$1133 + 4 >> 2] = HEAP32[$1139 >> 2];
      $1141 = $18 + 8 | 0;
      HEAP32[$1133 + 8 >> 2] = HEAP32[$1141 >> 2];
      HEAP32[$1141 >> 2] = 0;
      HEAP32[$1139 >> 2] = 0;
      HEAP32[$18 >> 2] = 0;
      HEAP32[$1132 >> 2] = $1133 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1096, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18);
     $$0 = $$08$i;
     break L1;
     break;
    }
   case 79:
    {
     $1145 = $db + 4 | 0;
     $1151 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     $1152 = $first + 1 | 0;
     $1153 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1152, $last, $db) | 0;
     $1159 = ((HEAP32[$1145 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     if (($1153 | 0) == ($1152 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1161 = $db + 16 | 0;
     $1164 = HEAP32[$db + 12 >> 2] | 0;
     $1165 = $db + 20 | 0;
     $1166 = HEAP32[$1165 >> 2] | 0;
     $1168 = HEAP32[$db + 24 >> 2] | 0;
     if ($1166 >>> 0 < $1168 >>> 0) {
      HEAP32[$1166 >> 2] = 0;
      HEAP32[$1166 + 4 >> 2] = 0;
      HEAP32[$1166 + 8 >> 2] = 0;
      HEAP32[$1166 + 12 >> 2] = $1164;
      HEAP32[$1165 >> 2] = (HEAP32[$1165 >> 2] | 0) + 16;
     } else {
      $1178 = HEAP32[$1161 >> 2] | 0;
      $1179 = $1166 - $1178 | 0;
      $1180 = $1179 >> 4;
      $1181 = $1180 + 1 | 0;
      if (($1179 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1161);
      $1184 = $1168 - $1178 | 0;
      if ($1184 >> 4 >>> 0 < 1073741823) {
       $1187 = $1184 >> 3;
       $$0$i$i$i81 = $1187 >>> 0 < $1181 >>> 0 ? $1181 : $1187;
      } else $$0$i$i$i81 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i81, $1180, $db + 28 | 0);
      $1190 = $__v$i$i$i + 8 | 0;
      $1191 = HEAP32[$1190 >> 2] | 0;
      HEAP32[$1191 >> 2] = 0;
      HEAP32[$1191 + 4 >> 2] = 0;
      HEAP32[$1191 + 8 >> 2] = 0;
      HEAP32[$1191 + 12 >> 2] = $1164;
      HEAP32[$1190 >> 2] = $1191 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1161, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     $1196 = $20 + 4 | 0;
     $1197 = $20 + 8 | 0;
     $1198 = $20 + 1 | 0;
     $1199 = $__v$i$i$i + 8 | 0;
     if ($1151 >>> 0 < $1159 >>> 0) $k5$0533 = $1151; else {
      $$0 = $1153;
      break L1;
     }
     while (1) {
      $1201 = HEAP32[$db >> 2] | 0;
      $1202 = $1201 + ($k5$0533 * 24 | 0) + 12 | 0;
      $1203 = HEAP8[$1202 >> 0] | 0;
      $1205 = ($1203 & 1) == 0;
      $1210 = $1205 ? ($1203 & 255) >>> 1 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($20, $1205 ? $1202 + 1 | 0 : HEAP32[$1201 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0, $1210 >>> 0 < 2 ? $1210 : 2);
      $1217 = HEAP8[$20 >> 0] | 0;
      $1219 = ($1217 & 1) == 0;
      $1223 = $1219 ? ($1217 & 255) >>> 1 : HEAP32[$1196 >> 2] | 0;
      $1226 = $1223 >>> 0 > 2;
      $1228 = _memcmp($1219 ? $1198 : HEAP32[$1197 >> 2] | 0, 12696, $1226 ? 2 : $1223) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);
      $1233 = HEAP32[$db >> 2] | 0;
      if (!((($1228 | 0) == 0 ? ($1223 >>> 0 < 2 ? -1 : $1226 & 1) : $1228) | 0)) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12616) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12619) | 0;
      } else {
       $1237 = $1233 + ($k5$0533 * 24 | 0) + 12 | 0;
       if (!(HEAP8[$1237 >> 0] & 1)) $1245 = $1237 + 1 | 0; else $1245 = HEAP32[$1233 + ($k5$0533 * 24 | 0) + 20 >> 2] | 0;
       if ((HEAP8[$1245 >> 0] | 0) == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1233 + ($k5$0533 * 24 | 0) | 0, 12714) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) + 12 | 0, 0, 12619) | 0;
       }
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k5$0533 * 24 | 0) | 0, 12743) | 0;
      $1252 = HEAP32[$1165 >> 2] | 0;
      $1253 = $1252 + -16 | 0;
      $1254 = HEAP32[$db >> 2] | 0;
      $1255 = $1254 + ($k5$0533 * 24 | 0) | 0;
      $1256 = $1252 + -12 | 0;
      $1257 = HEAP32[$1256 >> 2] | 0;
      if (($1257 | 0) == (HEAP32[$1252 + -8 >> 2] | 0)) {
       $1269 = $1257 - (HEAP32[$1253 >> 2] | 0) | 0;
       $1270 = ($1269 | 0) / 24 | 0;
       $1271 = $1270 + 1 | 0;
       if (($1269 | 0) < -24) {
        $$lcssa667 = $1253;
        break;
       }
       if ($1270 >>> 0 < 1073741823) {
        $1274 = $1270 << 1;
        $$0$i$i$i87 = $1274 >>> 0 < $1271 >>> 0 ? $1271 : $1274;
       } else $$0$i$i$i87 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i87, $1270, $1252 + -4 | 0);
       $1277 = HEAP32[$1199 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277, $1255);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1277 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0);
       HEAP32[$1199 >> 2] = $1277 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1253, $__v$i$i$i);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257, $1255);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1257 + 12 | 0, $1254 + ($k5$0533 * 24 | 0) + 12 | 0);
       HEAP32[$1256 >> 2] = (HEAP32[$1256 >> 2] | 0) + 24;
      }
      $k5$0533 = $k5$0533 + 1 | 0;
      if ($k5$0533 >>> 0 >= $1159 >>> 0) {
       $$0 = $1153;
       break L1;
      }
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa667);
     break;
    }
   case 80:
    {
     $1283 = $db + 4 | 0;
     $1289 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     $1290 = $first + 1 | 0;
     $1291 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1290, $last, $db) | 0;
     $1297 = ((HEAP32[$1283 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     if (($1291 | 0) == ($1290 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1299 = $db + 16 | 0;
     $1302 = HEAP32[$db + 12 >> 2] | 0;
     $1303 = $db + 20 | 0;
     $1304 = HEAP32[$1303 >> 2] | 0;
     $1306 = HEAP32[$db + 24 >> 2] | 0;
     if ($1304 >>> 0 < $1306 >>> 0) {
      HEAP32[$1304 >> 2] = 0;
      HEAP32[$1304 + 4 >> 2] = 0;
      HEAP32[$1304 + 8 >> 2] = 0;
      HEAP32[$1304 + 12 >> 2] = $1302;
      HEAP32[$1303 >> 2] = (HEAP32[$1303 >> 2] | 0) + 16;
     } else {
      $1316 = HEAP32[$1299 >> 2] | 0;
      $1317 = $1304 - $1316 | 0;
      $1318 = $1317 >> 4;
      $1319 = $1318 + 1 | 0;
      if (($1317 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1299);
      $1322 = $1306 - $1316 | 0;
      if ($1322 >> 4 >>> 0 < 1073741823) {
       $1325 = $1322 >> 3;
       $$0$i$i$i95 = $1325 >>> 0 < $1319 >>> 0 ? $1319 : $1325;
      } else $$0$i$i$i95 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i95, $1318, $db + 28 | 0);
      $1328 = $__v$i$i$i + 8 | 0;
      $1329 = HEAP32[$1328 >> 2] | 0;
      HEAP32[$1329 >> 2] = 0;
      HEAP32[$1329 + 4 >> 2] = 0;
      HEAP32[$1329 + 8 >> 2] = 0;
      HEAP32[$1329 + 12 >> 2] = $1302;
      HEAP32[$1328 >> 2] = $1329 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1299, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     $1334 = $21 + 4 | 0;
     $1335 = $21 + 8 | 0;
     $1336 = $21 + 1 | 0;
     $1337 = $22 + 4 | 0;
     $1338 = $22 + 8 | 0;
     $1339 = $22 + 1 | 0;
     $1340 = $__v$i$i$i + 8 | 0;
     if ($1289 >>> 0 < $1297 >>> 0) $k8$0536 = $1289; else {
      $$0 = $1291;
      break L1;
     }
     while (1) {
      $1342 = HEAP32[$db >> 2] | 0;
      $1343 = $1342 + ($k8$0536 * 24 | 0) + 12 | 0;
      $1344 = HEAP8[$1343 >> 0] | 0;
      $1346 = ($1344 & 1) == 0;
      $1351 = $1346 ? ($1344 & 255) >>> 1 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($21, $1346 ? $1343 + 1 | 0 : HEAP32[$1342 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0, $1351 >>> 0 < 2 ? $1351 : 2);
      $1358 = HEAP8[$21 >> 0] | 0;
      $1360 = ($1358 & 1) == 0;
      $1364 = $1360 ? ($1358 & 255) >>> 1 : HEAP32[$1334 >> 2] | 0;
      $1367 = $1364 >>> 0 > 2;
      $1369 = _memcmp($1360 ? $1336 : HEAP32[$1335 >> 2] | 0, 12696, $1367 ? 2 : $1364) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);
      $1374 = HEAP32[$db >> 2] | 0;
      if (!((($1369 | 0) == 0 ? ($1364 >>> 0 < 2 ? -1 : $1367 & 1) : $1369) | 0)) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12616) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12619) | 0;
      } else {
       $1378 = $1374 + ($k8$0536 * 24 | 0) + 12 | 0;
       if (!(HEAP8[$1378 >> 0] & 1)) $1386 = $1378 + 1 | 0; else $1386 = HEAP32[$1374 + ($k8$0536 * 24 | 0) + 20 >> 2] | 0;
       if ((HEAP8[$1386 >> 0] | 0) == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1374 + ($k8$0536 * 24 | 0) | 0, 12714) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k8$0536 * 24 | 0) + 12 | 0, 0, 12619) | 0;
       }
      }
      $1393 = HEAP32[$db >> 2] | 0;
      $1394 = $1393 + ($k8$0536 * 24 | 0) | 0;
      do if ((HEAP8[$1290 >> 0] | 0) == 85) {
       $1395 = HEAP8[$1394 >> 0] | 0;
       $1397 = ($1395 & 1) == 0;
       $1402 = $1397 ? ($1395 & 255) >>> 1 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, $1397 ? $1394 + 1 | 0 : HEAP32[$1393 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0, $1402 >>> 0 < 12 ? $1402 : 12);
       $1409 = HEAP8[$22 >> 0] | 0;
       $1411 = ($1409 & 1) == 0;
       $1415 = $1411 ? ($1409 & 255) >>> 1 : HEAP32[$1337 >> 2] | 0;
       $1418 = $1415 >>> 0 > 12;
       $1420 = _memcmp($1411 ? $1339 : HEAP32[$1338 >> 2] | 0, 12746, $1418 ? 12 : $1415) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);
       $1425 = HEAP32[$db >> 2] | 0;
       $1426 = $1425 + ($k8$0536 * 24 | 0) | 0;
       if (!((($1420 | 0) == 0 ? ($1415 >>> 0 < 12 ? -1 : $1418 & 1) : $1420) | 0)) {
        $1428 = HEAP8[$1426 >> 0] | 0;
        if (!($1428 & 1)) {
         $1432 = ($1428 & 255) >>> 1;
         $1443 = $1432 >>> 0 < 11 ? $1432 : 11;
         $1444 = $1432;
         $1446 = 10;
         $1449 = $1428;
        } else {
         $1436 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] | 0;
         $1439 = HEAP32[$1426 >> 2] | 0;
         $1443 = $1436 >>> 0 < 11 ? $1436 : 11;
         $1444 = $1436;
         $1446 = ($1439 & -2) + -1 | 0;
         $1449 = $1439 & 255;
        }
        if (($1443 - $1444 + $1446 | 0) >>> 0 < 2) {
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($1426, $1446, 2 - $1443 + $1444 - $1446 | 0, $1444, 0, $1443, 2, 12761);
         break;
        }
        if (!($1449 & 1)) $1458 = $1426 + 1 | 0; else $1458 = HEAP32[$1425 + ($k8$0536 * 24 | 0) + 8 >> 2] | 0;
        do if (($1443 | 0) == 2) {
         $$1$i$i = 0;
         $$12$i$i = 12761;
         $$14$i$i = 2;
         $2573 = 2;
         label = 339;
        } else {
         $1455 = $1444 - $1443 | 0;
         if (($1444 | 0) == ($1443 | 0)) {
          $$1$i$i = 0;
          $$12$i$i = 12761;
          $$14$i$i = 2;
          $2573 = $1443;
          label = 339;
         } else {
          if ($1443 >>> 0 > 2) {
           HEAP8[$1458 >> 0] = 105;
           HEAP8[$1458 + 1 >> 0] = 100;
           _memmove($1458 + 2 | 0, $1458 + $1443 | 0, $1455 | 0) | 0;
           $$2$i$i = 2;
           $1474 = $1443;
           break;
          }
          do if ($1458 >>> 0 < 12761 >>> 0 & ($1458 + $1444 | 0) >>> 0 > 12761 >>> 0) if (($1458 + $1443 | 0) >>> 0 > 12761 >>> 0) {
           _memcpy($1458 | 0, 12761, $1443 | 0) | 0;
           $$0$i$i = $1443;
           $$01$i$i = 12763;
           $$03$i$i = 2 - $1443 | 0;
           $1470 = 0;
           break;
          } else {
           $$0$i$i = 0;
           $$01$i$i = 12761 + (2 - $1443) | 0;
           $$03$i$i = 2;
           $1470 = $1443;
           break;
          } else {
           $$0$i$i = 0;
           $$01$i$i = 12761;
           $$03$i$i = 2;
           $1470 = $1443;
          } while (0);
          _memmove($1458 + ($$0$i$i + $$03$i$i) | 0, $1458 + ($$0$i$i + $1470) | 0, $1455 | 0) | 0;
          $$1$i$i = $$0$i$i;
          $$12$i$i = $$01$i$i;
          $$14$i$i = $$03$i$i;
          $2573 = $1470;
          label = 339;
         }
        } while (0);
        if ((label | 0) == 339) {
         label = 0;
         _memmove($1458 + $$1$i$i | 0, $$12$i$i | 0, $$14$i$i | 0) | 0;
         $$2$i$i = $$14$i$i;
         $1474 = $2573;
        }
        $1475 = $$2$i$i - $1474 + $1444 | 0;
        if (!(HEAP8[$1426 >> 0] & 1)) HEAP8[$1426 >> 0] = $1475 << 1; else HEAP32[$1425 + ($k8$0536 * 24 | 0) + 4 >> 2] = $1475;
        HEAP8[$1458 + $1475 >> 0] = 0;
       } else {
        $1427 = $1426;
        label = 322;
       }
      } else {
       $1427 = $1394;
       label = 322;
      } while (0);
      if ((label | 0) == 322) {
       label = 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1427, 12759) | 0;
      }
      $1486 = HEAP32[$1303 >> 2] | 0;
      $1487 = $1486 + -16 | 0;
      $1488 = HEAP32[$db >> 2] | 0;
      $1489 = $1488 + ($k8$0536 * 24 | 0) | 0;
      $1490 = $1486 + -12 | 0;
      $1491 = HEAP32[$1490 >> 2] | 0;
      if (($1491 | 0) == (HEAP32[$1486 + -8 >> 2] | 0)) {
       $1503 = $1491 - (HEAP32[$1487 >> 2] | 0) | 0;
       $1504 = ($1503 | 0) / 24 | 0;
       $1505 = $1504 + 1 | 0;
       if (($1503 | 0) < -24) {
        $$lcssa674 = $1487;
        break;
       }
       if ($1504 >>> 0 < 1073741823) {
        $1508 = $1504 << 1;
        $$0$i$i$i105 = $1508 >>> 0 < $1505 >>> 0 ? $1505 : $1508;
       } else $$0$i$i$i105 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i105, $1504, $1486 + -4 | 0);
       $1511 = HEAP32[$1340 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511, $1489);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1511 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0);
       HEAP32[$1340 >> 2] = $1511 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1487, $__v$i$i$i);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491, $1489);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1491 + 12 | 0, $1488 + ($k8$0536 * 24 | 0) + 12 | 0);
       HEAP32[$1490 >> 2] = (HEAP32[$1490 >> 2] | 0) + 24;
      }
      $k8$0536 = $k8$0536 + 1 | 0;
      if ($k8$0536 >>> 0 >= $1297 >>> 0) {
       $$0 = $1291;
       break L1;
      }
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa674);
     break;
    }
   case 82:
    {
     $1517 = $db + 4 | 0;
     $1523 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     $1524 = $first + 1 | 0;
     $1525 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1524, $last, $db) | 0;
     $1531 = ((HEAP32[$1517 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     if (($1525 | 0) == ($1524 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1533 = $db + 16 | 0;
     $1536 = HEAP32[$db + 12 >> 2] | 0;
     $1537 = $db + 20 | 0;
     $1538 = HEAP32[$1537 >> 2] | 0;
     $1540 = HEAP32[$db + 24 >> 2] | 0;
     if ($1538 >>> 0 < $1540 >>> 0) {
      HEAP32[$1538 >> 2] = 0;
      HEAP32[$1538 + 4 >> 2] = 0;
      HEAP32[$1538 + 8 >> 2] = 0;
      HEAP32[$1538 + 12 >> 2] = $1536;
      HEAP32[$1537 >> 2] = (HEAP32[$1537 >> 2] | 0) + 16;
     } else {
      $1550 = HEAP32[$1533 >> 2] | 0;
      $1551 = $1538 - $1550 | 0;
      $1552 = $1551 >> 4;
      $1553 = $1552 + 1 | 0;
      if (($1551 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1533);
      $1556 = $1540 - $1550 | 0;
      if ($1556 >> 4 >>> 0 < 1073741823) {
       $1559 = $1556 >> 3;
       $$0$i$i$i113 = $1559 >>> 0 < $1553 >>> 0 ? $1553 : $1559;
      } else $$0$i$i$i113 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i113, $1552, $db + 28 | 0);
      $1562 = $__v$i$i$i + 8 | 0;
      $1563 = HEAP32[$1562 >> 2] | 0;
      HEAP32[$1563 >> 2] = 0;
      HEAP32[$1563 + 4 >> 2] = 0;
      HEAP32[$1563 + 8 >> 2] = 0;
      HEAP32[$1563 + 12 >> 2] = $1536;
      HEAP32[$1562 >> 2] = $1563 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1533, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     $1568 = $23 + 4 | 0;
     $1569 = $23 + 8 | 0;
     $1570 = $23 + 1 | 0;
     $1571 = $__v$i$i$i + 8 | 0;
     if ($1523 >>> 0 < $1531 >>> 0) $k11$0540 = $1523; else {
      $$0 = $1525;
      break L1;
     }
     while (1) {
      $1573 = HEAP32[$db >> 2] | 0;
      $1574 = $1573 + ($k11$0540 * 24 | 0) + 12 | 0;
      $1575 = HEAP8[$1574 >> 0] | 0;
      $1577 = ($1575 & 1) == 0;
      $1582 = $1577 ? ($1575 & 255) >>> 1 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 16 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($23, $1577 ? $1574 + 1 | 0 : HEAP32[$1573 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0, $1582 >>> 0 < 2 ? $1582 : 2);
      $1589 = HEAP8[$23 >> 0] | 0;
      $1591 = ($1589 & 1) == 0;
      $1595 = $1591 ? ($1589 & 255) >>> 1 : HEAP32[$1568 >> 2] | 0;
      $1598 = $1595 >>> 0 > 2;
      $1600 = _memcmp($1591 ? $1570 : HEAP32[$1569 >> 2] | 0, 12696, $1598 ? 2 : $1595) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);
      $1605 = HEAP32[$db >> 2] | 0;
      if (!((($1600 | 0) == 0 ? ($1595 >>> 0 < 2 ? -1 : $1598 & 1) : $1600) | 0)) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12616) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12619) | 0;
      } else {
       $1609 = $1605 + ($k11$0540 * 24 | 0) + 12 | 0;
       if (!(HEAP8[$1609 >> 0] & 1)) $1617 = $1609 + 1 | 0; else $1617 = HEAP32[$1605 + ($k11$0540 * 24 | 0) + 20 >> 2] | 0;
       if ((HEAP8[$1617 >> 0] | 0) == 40) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1605 + ($k11$0540 * 24 | 0) | 0, 12714) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) + 12 | 0, 0, 12619) | 0;
       }
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$db >> 2] | 0) + ($k11$0540 * 24 | 0) | 0, 12764) | 0;
      $1624 = HEAP32[$1537 >> 2] | 0;
      $1625 = $1624 + -16 | 0;
      $1626 = HEAP32[$db >> 2] | 0;
      $1627 = $1626 + ($k11$0540 * 24 | 0) | 0;
      $1628 = $1624 + -12 | 0;
      $1629 = HEAP32[$1628 >> 2] | 0;
      if (($1629 | 0) == (HEAP32[$1624 + -8 >> 2] | 0)) {
       $1641 = $1629 - (HEAP32[$1625 >> 2] | 0) | 0;
       $1642 = ($1641 | 0) / 24 | 0;
       $1643 = $1642 + 1 | 0;
       if (($1641 | 0) < -24) {
        $$lcssa682 = $1625;
        break;
       }
       if ($1642 >>> 0 < 1073741823) {
        $1646 = $1642 << 1;
        $$0$i$i$i123 = $1646 >>> 0 < $1643 >>> 0 ? $1643 : $1646;
       } else $$0$i$i$i123 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i123, $1642, $1624 + -4 | 0);
       $1649 = HEAP32[$1571 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649, $1627);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1649 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0);
       HEAP32[$1571 >> 2] = $1649 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1625, $__v$i$i$i);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629, $1627);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1629 + 12 | 0, $1626 + ($k11$0540 * 24 | 0) + 12 | 0);
       HEAP32[$1628 >> 2] = (HEAP32[$1628 >> 2] | 0) + 24;
      }
      $k11$0540 = $k11$0540 + 1 | 0;
      if ($k11$0540 >>> 0 >= $1531 >>> 0) {
       $$0 = $1525;
       break L1;
      }
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa682);
     break;
    }
   case 84:
    {
     $1655 = $db + 4 | 0;
     $1661 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     $1662 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
     $1668 = ((HEAP32[$1655 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
     if (($1662 | 0) == ($first | 0)) {
      $$0 = $first;
      break L1;
     }
     $1670 = $db + 16 | 0;
     $1671 = $db + 12 | 0;
     $1673 = HEAP32[$1671 >> 2] | 0;
     $1674 = $db + 20 | 0;
     $1675 = HEAP32[$1674 >> 2] | 0;
     $1676 = $db + 24 | 0;
     $1677 = HEAP32[$1676 >> 2] | 0;
     if ($1675 >>> 0 < $1677 >>> 0) {
      HEAP32[$1675 >> 2] = 0;
      HEAP32[$1675 + 4 >> 2] = 0;
      HEAP32[$1675 + 8 >> 2] = 0;
      HEAP32[$1675 + 12 >> 2] = $1673;
      HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16;
     } else {
      $1687 = HEAP32[$1670 >> 2] | 0;
      $1688 = $1675 - $1687 | 0;
      $1689 = $1688 >> 4;
      $1690 = $1689 + 1 | 0;
      if (($1688 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670);
      $1693 = $1677 - $1687 | 0;
      if ($1693 >> 4 >>> 0 < 1073741823) {
       $1696 = $1693 >> 3;
       $$0$i$i$i131 = $1696 >>> 0 < $1690 >>> 0 ? $1690 : $1696;
      } else $$0$i$i$i131 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i131, $1689, $db + 28 | 0);
      $1699 = $__v$i$i$i + 8 | 0;
      $1700 = HEAP32[$1699 >> 2] | 0;
      HEAP32[$1700 >> 2] = 0;
      HEAP32[$1700 + 4 >> 2] = 0;
      HEAP32[$1700 + 8 >> 2] = 0;
      HEAP32[$1700 + 12 >> 2] = $1673;
      HEAP32[$1699 >> 2] = $1700 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     $1705 = $__v$i$i$i + 8 | 0;
     L522 : do if ($1661 >>> 0 < $1668 >>> 0) {
      $k15$0543 = $1661;
      while (1) {
       $1707 = HEAP32[$1674 >> 2] | 0;
       $1708 = $1707 + -16 | 0;
       $1709 = HEAP32[$db >> 2] | 0;
       $1710 = $1709 + ($k15$0543 * 24 | 0) | 0;
       $1711 = $1707 + -12 | 0;
       $1712 = HEAP32[$1711 >> 2] | 0;
       if (($1712 | 0) == (HEAP32[$1707 + -8 >> 2] | 0)) {
        $1724 = $1712 - (HEAP32[$1708 >> 2] | 0) | 0;
        $1725 = ($1724 | 0) / 24 | 0;
        $1726 = $1725 + 1 | 0;
        if (($1724 | 0) < -24) {
         $$lcssa690 = $1708;
         break;
        }
        if ($1725 >>> 0 < 1073741823) {
         $1729 = $1725 << 1;
         $$0$i$i$i136 = $1729 >>> 0 < $1726 >>> 0 ? $1726 : $1729;
        } else $$0$i$i$i136 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i136, $1725, $1707 + -4 | 0);
        $1732 = HEAP32[$1705 >> 2] | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732, $1710);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1732 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0);
        HEAP32[$1705 >> 2] = $1732 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($1708, $__v$i$i$i);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
       } else {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712, $1710);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($1712 + 12 | 0, $1709 + ($k15$0543 * 24 | 0) + 12 | 0);
        HEAP32[$1711 >> 2] = (HEAP32[$1711 >> 2] | 0) + 24;
       }
       $k15$0543 = $k15$0543 + 1 | 0;
       if ($k15$0543 >>> 0 >= $1668 >>> 0) break L522;
      }
      __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa690);
     } while (0);
     if (!(($1668 | 0) == ($1661 + 1 | 0) & (HEAP8[$db + 63 >> 0] | 0) != 0)) {
      $$0 = $1662;
      break L1;
     }
     $1743 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0;
     if (($1743 | 0) == ($1662 | 0)) {
      $$0 = $1662;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, (HEAP32[$1655 >> 2] | 0) + -24 | 0);
     $1747 = HEAP32[$1655 >> 2] | 0;
     $1748 = $1747 + -24 | 0;
     $1750 = $1747;
     do {
      $1749 = $1750 + -24 | 0;
      HEAP32[$1655 >> 2] = $1749;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1749);
      $1750 = HEAP32[$1655 >> 2] | 0;
     } while (($1750 | 0) != ($1748 | 0));
     $1753 = HEAP8[$args >> 0] | 0;
     $1755 = ($1753 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1747 + -48 | 0, $1755 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $1755 ? ($1753 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;
     $1766 = (HEAP32[$1655 >> 2] | 0) + -24 | 0;
     HEAP32[$25 >> 2] = HEAP32[$1671 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($24, $1766, $25);
     $1768 = HEAP32[$1674 >> 2] | 0;
     $1769 = HEAP32[$1676 >> 2] | 0;
     if ($1768 >>> 0 < $1769 >>> 0) {
      HEAP32[$1768 + 12 >> 2] = HEAP32[$24 + 12 >> 2];
      HEAP32[$1768 >> 2] = HEAP32[$24 >> 2];
      $1776 = $24 + 4 | 0;
      HEAP32[$1768 + 4 >> 2] = HEAP32[$1776 >> 2];
      $1778 = $24 + 8 | 0;
      HEAP32[$1768 + 8 >> 2] = HEAP32[$1778 >> 2];
      HEAP32[$1778 >> 2] = 0;
      HEAP32[$1776 >> 2] = 0;
      HEAP32[$24 >> 2] = 0;
      HEAP32[$1674 >> 2] = (HEAP32[$1674 >> 2] | 0) + 16;
     } else {
      $1786 = HEAP32[$1670 >> 2] | 0;
      $1787 = $1768 - $1786 | 0;
      $1788 = $1787 >> 4;
      $1789 = $1788 + 1 | 0;
      if (($1787 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1670);
      $1792 = $1769 - $1786 | 0;
      if ($1792 >> 4 >>> 0 < 1073741823) {
       $1795 = $1792 >> 3;
       $$0$i$i$i148 = $1795 >>> 0 < $1789 >>> 0 ? $1789 : $1795;
      } else $$0$i$i$i148 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i148, $1788, $db + 28 | 0);
      $1798 = $__v$i$i$i + 8 | 0;
      $1799 = HEAP32[$1798 >> 2] | 0;
      HEAP32[$1799 + 12 >> 2] = HEAP32[$24 + 12 >> 2];
      HEAP32[$1799 >> 2] = HEAP32[$24 >> 2];
      $1805 = $24 + 4 | 0;
      HEAP32[$1799 + 4 >> 2] = HEAP32[$1805 >> 2];
      $1807 = $24 + 8 | 0;
      HEAP32[$1799 + 8 >> 2] = HEAP32[$1807 >> 2];
      HEAP32[$1807 >> 2] = 0;
      HEAP32[$1805 >> 2] = 0;
      HEAP32[$24 >> 2] = 0;
      HEAP32[$1798 >> 2] = $1799 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1670, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($24);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
     $$0 = $1743;
     break L1;
     break;
    }
   case 85:
    {
     $1811 = $first + 1 | 0;
     if (($1811 | 0) == ($last | 0)) {
      $$0 = $first;
      break L1;
     }
     $1813 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1811, $last, $db) | 0;
     if (($1813 | 0) == ($1811 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1815 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1813, $last, $db) | 0;
     if (($1815 | 0) == ($1813 | 0)) {
      $$0 = $first;
      break L1;
     }
     $1817 = $db + 4 | 0;
     $1818 = HEAP32[$1817 >> 2] | 0;
     if ((($1818 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      $$0 = $first;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($type, $1818 + -24 | 0);
     $1826 = HEAP32[$1817 >> 2] | 0;
     $1827 = $1826 + -24 | 0;
     $1829 = $1826;
     do {
      $1828 = $1829 + -24 | 0;
      HEAP32[$1817 >> 2] = $1828;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1828);
      $1829 = HEAP32[$1817 >> 2] | 0;
     } while (($1829 | 0) != ($1827 | 0));
     $1831 = $1826 + -48 | 0;
     $1832 = HEAP8[$1831 >> 0] | 0;
     $1834 = ($1832 & 1) == 0;
     $1839 = $1834 ? ($1832 & 255) >>> 1 : HEAP32[$1826 + -44 >> 2] | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($26, $1834 ? $1831 + 1 | 0 : HEAP32[$1826 + -40 >> 2] | 0, $1839 >>> 0 < 9 ? $1839 : 9);
     $1846 = HEAP8[$26 >> 0] | 0;
     $1848 = ($1846 & 1) == 0;
     $1853 = $1848 ? ($1846 & 255) >>> 1 : HEAP32[$26 + 4 >> 2] | 0;
     $1858 = $1853 >>> 0 > 9;
     $1860 = _memcmp($1848 ? $26 + 1 | 0 : HEAP32[$26 + 8 >> 2] | 0, 12766, $1858 ? 9 : $1853) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26);
     $1866 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;
     if (!((($1860 | 0) == 0 ? ($1853 >>> 0 < 9 ? -1 : $1858 & 1) : $1860) | 0)) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($proto, $1866);
      $1884 = HEAP32[$1817 >> 2] | 0;
      $1885 = $1884 + -24 | 0;
      $1887 = $1884;
      do {
       $1886 = $1887 + -24 | 0;
       HEAP32[$1817 >> 2] = $1886;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1886);
       $1887 = HEAP32[$1817 >> 2] | 0;
      } while (($1887 | 0) != ($1885 | 0));
      $1889 = HEAP8[$proto >> 0] | 0;
      $1891 = ($1889 & 1) == 0;
      $1892 = $proto + 8 | 0;
      $1894 = $proto + 1 | 0;
      $1895 = $1891 ? $1894 : HEAP32[$1892 >> 2] | 0;
      $1897 = $proto + 4 | 0;
      $1903 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1895 + 9 | 0, $1895 + ($1891 ? ($1889 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0, $db) | 0;
      if (($1903 | 0) == (((HEAP8[$proto >> 0] & 1) == 0 ? $1894 : HEAP32[$1892 >> 2] | 0) + 9 | 0)) {
       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($38, $type, 12726);
       $1933 = HEAP8[$proto >> 0] | 0;
       $1935 = ($1933 & 1) == 0;
       $1942 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($38, $1935 ? $1894 : HEAP32[$1892 >> 2] | 0, $1935 ? ($1933 & 255) >>> 1 : HEAP32[$1897 >> 2] | 0) | 0;
       HEAP32[$37 >> 2] = HEAP32[$1942 >> 2];
       HEAP32[$37 + 4 >> 2] = HEAP32[$1942 + 4 >> 2];
       HEAP32[$37 + 8 >> 2] = HEAP32[$1942 + 8 >> 2];
       HEAP32[$1942 >> 2] = 0;
       HEAP32[$1942 + 4 >> 2] = 0;
       HEAP32[$1942 + 8 >> 2] = 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37);
       $1945 = HEAP32[$1817 >> 2] | 0;
       $1947 = HEAP32[$db + 8 >> 2] | 0;
       if ($1945 >>> 0 < $1947 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1945, $36);
        HEAP32[$1817 >> 2] = (HEAP32[$1817 >> 2] | 0) + 24;
       } else {
        $1954 = HEAP32[$db >> 2] | 0;
        $1955 = $1945 - $1954 | 0;
        $1956 = ($1955 | 0) / 24 | 0;
        $1957 = $1956 + 1 | 0;
        if (($1955 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $1961 = ($1947 - $1954 | 0) / 24 | 0;
        if ($1961 >>> 0 < 1073741823) {
         $1963 = $1961 << 1;
         $$0$i$i$i181 = $1963 >>> 0 < $1957 >>> 0 ? $1957 : $1963;
        } else $$0$i$i$i181 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i181, $1956, $db + 12 | 0);
        $1966 = $__v$i$i$i + 8 | 0;
        $1967 = HEAP32[$1966 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1967, $36);
        HEAP32[$1966 >> 2] = $1967 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38);
      } else {
       $1912 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;
       __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($34, $type, 12776);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($35, (HEAP32[$1817 >> 2] | 0) + -24 | 0);
       $1915 = HEAP8[$35 >> 0] | 0;
       $1917 = ($1915 & 1) == 0;
       $1927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($34, $1917 ? $35 + 1 | 0 : HEAP32[$35 + 8 >> 2] | 0, $1917 ? ($1915 & 255) >>> 1 : HEAP32[$35 + 4 >> 2] | 0) | 0;
       HEAP32[$33 >> 2] = HEAP32[$1927 >> 2];
       HEAP32[$33 + 4 >> 2] = HEAP32[$1927 + 4 >> 2];
       HEAP32[$33 + 8 >> 2] = HEAP32[$1927 + 8 >> 2];
       HEAP32[$1927 >> 2] = 0;
       HEAP32[$1927 + 4 >> 2] = 0;
       HEAP32[$1927 + 8 >> 2] = 0;
       $1930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($33, 12778) | 0;
       HEAP32[$32 >> 2] = HEAP32[$1930 >> 2];
       HEAP32[$32 + 4 >> 2] = HEAP32[$1930 + 4 >> 2];
       HEAP32[$32 + 8 >> 2] = HEAP32[$1930 + 8 >> 2];
       HEAP32[$1930 >> 2] = 0;
       HEAP32[$1930 + 4 >> 2] = 0;
       HEAP32[$1930 + 8 >> 2] = 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($31, $32);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1912, $31);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34);
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($proto);
     } else {
      __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($29, $type, 12726);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($30, (HEAP32[$1817 >> 2] | 0) + -24 | 0);
      $1869 = HEAP8[$30 >> 0] | 0;
      $1871 = ($1869 & 1) == 0;
      $1881 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($29, $1871 ? $30 + 1 | 0 : HEAP32[$30 + 8 >> 2] | 0, $1871 ? ($1869 & 255) >>> 1 : HEAP32[$30 + 4 >> 2] | 0) | 0;
      HEAP32[$28 >> 2] = HEAP32[$1881 >> 2];
      HEAP32[$28 + 4 >> 2] = HEAP32[$1881 + 4 >> 2];
      HEAP32[$28 + 8 >> 2] = HEAP32[$1881 + 8 >> 2];
      HEAP32[$1881 >> 2] = 0;
      HEAP32[$1881 + 4 >> 2] = 0;
      HEAP32[$1881 + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($27, $28);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1866, $27);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29);
     }
     $1970 = (HEAP32[$1817 >> 2] | 0) + -24 | 0;
     HEAP32[$40 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($39, $1970, $40);
     $1973 = $db + 16 | 0;
     $1974 = $db + 20 | 0;
     $1975 = HEAP32[$1974 >> 2] | 0;
     $1977 = HEAP32[$db + 24 >> 2] | 0;
     if ($1975 >>> 0 < $1977 >>> 0) {
      HEAP32[$1975 + 12 >> 2] = HEAP32[$39 + 12 >> 2];
      HEAP32[$1975 >> 2] = HEAP32[$39 >> 2];
      $1984 = $39 + 4 | 0;
      HEAP32[$1975 + 4 >> 2] = HEAP32[$1984 >> 2];
      $1986 = $39 + 8 | 0;
      HEAP32[$1975 + 8 >> 2] = HEAP32[$1986 >> 2];
      HEAP32[$1986 >> 2] = 0;
      HEAP32[$1984 >> 2] = 0;
      HEAP32[$39 >> 2] = 0;
      HEAP32[$1974 >> 2] = (HEAP32[$1974 >> 2] | 0) + 16;
     } else {
      $1994 = HEAP32[$1973 >> 2] | 0;
      $1995 = $1975 - $1994 | 0;
      $1996 = $1995 >> 4;
      $1997 = $1996 + 1 | 0;
      if (($1995 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($1973);
      $2000 = $1977 - $1994 | 0;
      if ($2000 >> 4 >>> 0 < 1073741823) {
       $2003 = $2000 >> 3;
       $$0$i$i$i153 = $2003 >>> 0 < $1997 >>> 0 ? $1997 : $2003;
      } else $$0$i$i$i153 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i153, $1996, $db + 28 | 0);
      $2006 = $__v$i$i$i + 8 | 0;
      $2007 = HEAP32[$2006 >> 2] | 0;
      HEAP32[$2007 + 12 >> 2] = HEAP32[$39 + 12 >> 2];
      HEAP32[$2007 >> 2] = HEAP32[$39 >> 2];
      $2013 = $39 + 4 | 0;
      HEAP32[$2007 + 4 >> 2] = HEAP32[$2013 >> 2];
      $2015 = $39 + 8 | 0;
      HEAP32[$2007 + 8 >> 2] = HEAP32[$2015 >> 2];
      HEAP32[$2015 >> 2] = 0;
      HEAP32[$2013 >> 2] = 0;
      HEAP32[$39 >> 2] = 0;
      HEAP32[$2006 >> 2] = $2007 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($1973, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($39);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($type);
     $$0 = $1815;
     break L1;
     break;
    }
   case 83:
    {
     $2019 = $first + 1 | 0;
     if (($2019 | 0) != ($last | 0)) if ((HEAP8[$2019 >> 0] | 0) == 116) {
      $2023 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
      if (($2023 | 0) == ($first | 0)) {
       $$0 = $first;
       break L1;
      }
      $2027 = HEAP32[$db + 4 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($2027 | 0)) {
       $$0 = $first;
       break L1;
      }
      $2029 = $db + 16 | 0;
      HEAP32[$42 >> 2] = HEAP32[$db + 12 >> 2];
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($41, $2027 + -24 | 0, $42);
      $2033 = $db + 20 | 0;
      $2034 = HEAP32[$2033 >> 2] | 0;
      $2036 = HEAP32[$db + 24 >> 2] | 0;
      if ($2034 >>> 0 < $2036 >>> 0) {
       HEAP32[$2034 + 12 >> 2] = HEAP32[$41 + 12 >> 2];
       HEAP32[$2034 >> 2] = HEAP32[$41 >> 2];
       $2043 = $41 + 4 | 0;
       HEAP32[$2034 + 4 >> 2] = HEAP32[$2043 >> 2];
       $2045 = $41 + 8 | 0;
       HEAP32[$2034 + 8 >> 2] = HEAP32[$2045 >> 2];
       HEAP32[$2045 >> 2] = 0;
       HEAP32[$2043 >> 2] = 0;
       HEAP32[$41 >> 2] = 0;
       HEAP32[$2033 >> 2] = (HEAP32[$2033 >> 2] | 0) + 16;
      } else {
       $2053 = HEAP32[$2029 >> 2] | 0;
       $2054 = $2034 - $2053 | 0;
       $2055 = $2054 >> 4;
       $2056 = $2055 + 1 | 0;
       if (($2054 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2029);
       $2059 = $2036 - $2053 | 0;
       if ($2059 >> 4 >>> 0 < 1073741823) {
        $2062 = $2059 >> 3;
        $$0$i$i$i51 = $2062 >>> 0 < $2056 >>> 0 ? $2056 : $2062;
       } else $$0$i$i$i51 = 2147483647;
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i51, $2055, $db + 28 | 0);
       $2065 = $__v$i$i$i + 8 | 0;
       $2066 = HEAP32[$2065 >> 2] | 0;
       HEAP32[$2066 + 12 >> 2] = HEAP32[$41 + 12 >> 2];
       HEAP32[$2066 >> 2] = HEAP32[$41 >> 2];
       $2072 = $41 + 4 | 0;
       HEAP32[$2066 + 4 >> 2] = HEAP32[$2072 >> 2];
       $2074 = $41 + 8 | 0;
       HEAP32[$2066 + 8 >> 2] = HEAP32[$2074 >> 2];
       HEAP32[$2074 >> 2] = 0;
       HEAP32[$2072 >> 2] = 0;
       HEAP32[$41 >> 2] = 0;
       HEAP32[$2065 >> 2] = $2066 + 16;
       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2029, $__v$i$i$i);
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
      }
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($41);
      $$0 = $2023;
      break L1;
     }
     $2078 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
     if (($2078 | 0) == ($first | 0)) {
      $$0 = $first;
      break L1;
     }
     $2080 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($2078, $last, $db) | 0;
     if (($2080 | 0) == ($2078 | 0)) {
      $$0 = $2078;
      break L1;
     }
     $2082 = $db + 4 | 0;
     $2083 = HEAP32[$2082 >> 2] | 0;
     if ((($2083 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      $$0 = $2078;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($template_args, $2083 + -24 | 0);
     $2091 = HEAP32[$2082 >> 2] | 0;
     $2092 = $2091 + -24 | 0;
     $2094 = $2091;
     do {
      $2093 = $2094 + -24 | 0;
      HEAP32[$2082 >> 2] = $2093;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2093);
      $2094 = HEAP32[$2082 >> 2] | 0;
     } while (($2094 | 0) != ($2092 | 0));
     $2097 = HEAP8[$template_args >> 0] | 0;
     $2099 = ($2097 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2091 + -48 | 0, $2099 ? $template_args + 1 | 0 : HEAP32[$template_args + 8 >> 2] | 0, $2099 ? ($2097 & 255) >>> 1 : HEAP32[$template_args + 4 >> 2] | 0) | 0;
     $2110 = (HEAP32[$2082 >> 2] | 0) + -24 | 0;
     HEAP32[$44 >> 2] = HEAP32[$db + 12 >> 2];
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($43, $2110, $44);
     $2113 = $db + 16 | 0;
     $2114 = $db + 20 | 0;
     $2115 = HEAP32[$2114 >> 2] | 0;
     $2117 = HEAP32[$db + 24 >> 2] | 0;
     if ($2115 >>> 0 < $2117 >>> 0) {
      HEAP32[$2115 + 12 >> 2] = HEAP32[$43 + 12 >> 2];
      HEAP32[$2115 >> 2] = HEAP32[$43 >> 2];
      $2124 = $43 + 4 | 0;
      HEAP32[$2115 + 4 >> 2] = HEAP32[$2124 >> 2];
      $2126 = $43 + 8 | 0;
      HEAP32[$2115 + 8 >> 2] = HEAP32[$2126 >> 2];
      HEAP32[$2126 >> 2] = 0;
      HEAP32[$2124 >> 2] = 0;
      HEAP32[$43 >> 2] = 0;
      HEAP32[$2114 >> 2] = (HEAP32[$2114 >> 2] | 0) + 16;
     } else {
      $2134 = HEAP32[$2113 >> 2] | 0;
      $2135 = $2115 - $2134 | 0;
      $2136 = $2135 >> 4;
      $2137 = $2136 + 1 | 0;
      if (($2135 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2113);
      $2140 = $2117 - $2134 | 0;
      if ($2140 >> 4 >>> 0 < 1073741823) {
       $2143 = $2140 >> 3;
       $$0$i$i$i31 = $2143 >>> 0 < $2137 >>> 0 ? $2137 : $2143;
      } else $$0$i$i$i31 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i31, $2136, $db + 28 | 0);
      $2146 = $__v$i$i$i + 8 | 0;
      $2147 = HEAP32[$2146 >> 2] | 0;
      HEAP32[$2147 + 12 >> 2] = HEAP32[$43 + 12 >> 2];
      HEAP32[$2147 >> 2] = HEAP32[$43 >> 2];
      $2153 = $43 + 4 | 0;
      HEAP32[$2147 + 4 >> 2] = HEAP32[$2153 >> 2];
      $2155 = $43 + 8 | 0;
      HEAP32[$2147 + 8 >> 2] = HEAP32[$2155 >> 2];
      HEAP32[$2155 >> 2] = 0;
      HEAP32[$2153 >> 2] = 0;
      HEAP32[$43 >> 2] = 0;
      HEAP32[$2146 >> 2] = $2147 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2113, $__v$i$i$i);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
     }
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($43);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($template_args);
     $$0 = $2080;
     break L1;
     break;
    }
   case 68:
    {
     $2159 = $first + 1 | 0;
     if (($2159 | 0) != ($last | 0)) {
      $2161 = HEAP8[$2159 >> 0] | 0;
      switch ($2161 << 24 >> 24 | 0) {
      case 112:
       {
        $2163 = $db + 4 | 0;
        $2169 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
        $2170 = $first + 2 | 0;
        $2171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2170, $last, $db) | 0;
        $2177 = ((HEAP32[$2163 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
        if (($2171 | 0) == ($2170 | 0)) break L65;
        $2179 = $db + 16 | 0;
        $2182 = HEAP32[$db + 12 >> 2] | 0;
        $2183 = $db + 20 | 0;
        $2184 = HEAP32[$2183 >> 2] | 0;
        $2186 = HEAP32[$db + 24 >> 2] | 0;
        if ($2184 >>> 0 < $2186 >>> 0) {
         HEAP32[$2184 >> 2] = 0;
         HEAP32[$2184 + 4 >> 2] = 0;
         HEAP32[$2184 + 8 >> 2] = 0;
         HEAP32[$2184 + 12 >> 2] = $2182;
         HEAP32[$2183 >> 2] = (HEAP32[$2183 >> 2] | 0) + 16;
        } else {
         $2196 = HEAP32[$2179 >> 2] | 0;
         $2197 = $2184 - $2196 | 0;
         $2198 = $2197 >> 4;
         $2199 = $2198 + 1 | 0;
         if (($2197 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2179);
         $2202 = $2186 - $2196 | 0;
         if ($2202 >> 4 >>> 0 < 1073741823) {
          $2205 = $2202 >> 3;
          $$0$i$i$i29 = $2205 >>> 0 < $2199 >>> 0 ? $2199 : $2205;
         } else $$0$i$i$i29 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i29, $2198, $db + 28 | 0);
         $2208 = $__v$i$i$i + 8 | 0;
         $2209 = HEAP32[$2208 >> 2] | 0;
         HEAP32[$2209 >> 2] = 0;
         HEAP32[$2209 + 4 >> 2] = 0;
         HEAP32[$2209 + 8 >> 2] = 0;
         HEAP32[$2209 + 12 >> 2] = $2182;
         HEAP32[$2208 >> 2] = $2209 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2179, $__v$i$i$i);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
        }
        $2214 = $__v$i$i$i + 8 | 0;
        if ($2169 >>> 0 < $2177 >>> 0) $k20$0550 = $2169; else {
         $$0 = $2171;
         break L1;
        }
        while (1) {
         $2216 = HEAP32[$2183 >> 2] | 0;
         $2217 = $2216 + -16 | 0;
         $2218 = HEAP32[$db >> 2] | 0;
         $2219 = $2218 + ($k20$0550 * 24 | 0) | 0;
         $2220 = $2216 + -12 | 0;
         $2221 = HEAP32[$2220 >> 2] | 0;
         if (($2221 | 0) == (HEAP32[$2216 + -8 >> 2] | 0)) {
          $2233 = $2221 - (HEAP32[$2217 >> 2] | 0) | 0;
          $2234 = ($2233 | 0) / 24 | 0;
          $2235 = $2234 + 1 | 0;
          if (($2233 | 0) < -24) {
           $$lcssa698 = $2217;
           break;
          }
          if ($2234 >>> 0 < 1073741823) {
           $2238 = $2234 << 1;
           $$0$i$i$i27 = $2238 >>> 0 < $2235 >>> 0 ? $2235 : $2238;
          } else $$0$i$i$i27 = 2147483647;
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i27, $2234, $2216 + -4 | 0);
          $2241 = HEAP32[$2214 >> 2] | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241, $2219);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2241 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0);
          HEAP32[$2214 >> 2] = $2241 + 24;
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($2217, $__v$i$i$i);
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
         } else {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221, $2219);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($2221 + 12 | 0, $2218 + ($k20$0550 * 24 | 0) + 12 | 0);
          HEAP32[$2220 >> 2] = (HEAP32[$2220 >> 2] | 0) + 24;
         }
         $k20$0550 = $k20$0550 + 1 | 0;
         if ($k20$0550 >>> 0 >= $2177 >>> 0) {
          $$0 = $2171;
          break L1;
         }
        }
        __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa698);
        break;
       }
      case 84:
      case 116:
       {
        $2247 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
        if (($2247 | 0) == ($first | 0)) break L65;
        $2251 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($2251 | 0)) {
         $$0 = $first;
         break L1;
        }
        $2253 = $db + 16 | 0;
        HEAP32[$46 >> 2] = HEAP32[$db + 12 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($45, $2251 + -24 | 0, $46);
        $2257 = $db + 20 | 0;
        $2258 = HEAP32[$2257 >> 2] | 0;
        $2260 = HEAP32[$db + 24 >> 2] | 0;
        if ($2258 >>> 0 < $2260 >>> 0) {
         HEAP32[$2258 + 12 >> 2] = HEAP32[$45 + 12 >> 2];
         HEAP32[$2258 >> 2] = HEAP32[$45 >> 2];
         $2267 = $45 + 4 | 0;
         HEAP32[$2258 + 4 >> 2] = HEAP32[$2267 >> 2];
         $2269 = $45 + 8 | 0;
         HEAP32[$2258 + 8 >> 2] = HEAP32[$2269 >> 2];
         HEAP32[$2269 >> 2] = 0;
         HEAP32[$2267 >> 2] = 0;
         HEAP32[$45 >> 2] = 0;
         HEAP32[$2257 >> 2] = (HEAP32[$2257 >> 2] | 0) + 16;
        } else {
         $2277 = HEAP32[$2253 >> 2] | 0;
         $2278 = $2258 - $2277 | 0;
         $2279 = $2278 >> 4;
         $2280 = $2279 + 1 | 0;
         if (($2278 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2253);
         $2283 = $2260 - $2277 | 0;
         if ($2283 >> 4 >>> 0 < 1073741823) {
          $2286 = $2283 >> 3;
          $$0$i$i$i22 = $2286 >>> 0 < $2280 >>> 0 ? $2280 : $2286;
         } else $$0$i$i$i22 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i22, $2279, $db + 28 | 0);
         $2289 = $__v$i$i$i + 8 | 0;
         $2290 = HEAP32[$2289 >> 2] | 0;
         HEAP32[$2290 + 12 >> 2] = HEAP32[$45 + 12 >> 2];
         HEAP32[$2290 >> 2] = HEAP32[$45 >> 2];
         $2296 = $45 + 4 | 0;
         HEAP32[$2290 + 4 >> 2] = HEAP32[$2296 >> 2];
         $2298 = $45 + 8 | 0;
         HEAP32[$2290 + 8 >> 2] = HEAP32[$2298 >> 2];
         HEAP32[$2298 >> 2] = 0;
         HEAP32[$2296 >> 2] = 0;
         HEAP32[$45 >> 2] = 0;
         HEAP32[$2289 >> 2] = $2290 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2253, $__v$i$i$i);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($45);
        $$0 = $2247;
        break L1;
        break;
       }
      case 118:
       {
        L662 : do if (($last - $first | 0) > 3 & $197 << 24 >> 24 == 68 & $2161 << 24 >> 24 == 118) {
         $2308 = $first + 2 | 0;
         $2309 = HEAP8[$2308 >> 0] | 0;
         if (($2309 + -49 & 255) < 9) {
          $2311 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($2308, $last) | 0;
          if (($2311 | 0) == ($last | 0)) {
           $$1$i263 = $first;
           break;
          }
          if ((HEAP8[$2311 >> 0] | 0) != 95) {
           $$1$i263 = $first;
           break;
          }
          $2317 = $2311 - $2308 | 0;
          $2318 = $2311 + 1 | 0;
          if (($2318 | 0) == ($last | 0)) {
           $$1$i263 = $first;
           break;
          }
          if ((HEAP8[$2318 >> 0] | 0) != 112) {
           $2322 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2318, $last, $db) | 0;
           if (($2322 | 0) == ($2318 | 0)) {
            $$1$i263 = $first;
            break;
           }
           $2326 = HEAP32[$db + 4 >> 2] | 0;
           if ((HEAP32[$db >> 2] | 0) == ($2326 | 0)) {
            $$1$i263 = $first;
            break;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $2308, $2317);
           $2329 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12780) | 0;
           HEAP32[$1 >> 2] = HEAP32[$2329 >> 2];
           HEAP32[$1 + 4 >> 2] = HEAP32[$2329 + 4 >> 2];
           HEAP32[$1 + 8 >> 2] = HEAP32[$2329 + 8 >> 2];
           HEAP32[$2329 >> 2] = 0;
           HEAP32[$2329 + 4 >> 2] = 0;
           HEAP32[$2329 + 8 >> 2] = 0;
           $2332 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12703) | 0;
           HEAP32[$0 >> 2] = HEAP32[$2332 >> 2];
           HEAP32[$0 + 4 >> 2] = HEAP32[$2332 + 4 >> 2];
           HEAP32[$0 + 8 >> 2] = HEAP32[$2332 + 8 >> 2];
           HEAP32[$2332 >> 2] = 0;
           HEAP32[$2332 + 4 >> 2] = 0;
           HEAP32[$2332 + 8 >> 2] = 0;
           $2335 = HEAP8[$0 >> 0] | 0;
           $2337 = ($2335 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2326 + -24 | 0, $2337 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $2337 ? ($2335 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
           $$1$i263 = $2322;
           break;
          }
          $2347 = $2311 + 2 | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, $2308, $2317);
          $2348 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 12789) | 0;
          HEAP32[$5 >> 2] = HEAP32[$2348 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$2348 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$2348 + 8 >> 2];
          HEAP32[$2348 >> 2] = 0;
          HEAP32[$2348 + 4 >> 2] = 0;
          HEAP32[$2348 + 8 >> 2] = 0;
          $2351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 12703) | 0;
          HEAP32[$4 >> 2] = HEAP32[$2351 >> 2];
          HEAP32[$4 + 4 >> 2] = HEAP32[$2351 + 4 >> 2];
          HEAP32[$4 + 8 >> 2] = HEAP32[$2351 + 8 >> 2];
          HEAP32[$2351 >> 2] = 0;
          HEAP32[$2351 + 4 >> 2] = 0;
          HEAP32[$2351 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4);
          $2354 = $db + 4 | 0;
          $2355 = HEAP32[$2354 >> 2] | 0;
          $2357 = HEAP32[$db + 8 >> 2] | 0;
          if ($2355 >>> 0 < $2357 >>> 0) {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2355, $3);
           HEAP32[$2354 >> 2] = (HEAP32[$2354 >> 2] | 0) + 24;
          } else {
           $2364 = HEAP32[$db >> 2] | 0;
           $2365 = $2355 - $2364 | 0;
           $2366 = ($2365 | 0) / 24 | 0;
           $2367 = $2366 + 1 | 0;
           if (($2365 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
           $2371 = ($2357 - $2364 | 0) / 24 | 0;
           if ($2371 >>> 0 < 1073741823) {
            $2373 = $2371 << 1;
            $$0$i$i$i$i = $2373 >>> 0 < $2367 >>> 0 ? $2367 : $2373;
           } else $$0$i$i$i$i = 2147483647;
           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i$i, $$0$i$i$i$i, $2366, $db + 12 | 0);
           $2376 = $__v$i$i$i + 8 | 0;
           $2377 = HEAP32[$2376 >> 2] | 0;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($2377, $3);
           HEAP32[$2376 >> 2] = $2377 + 24;
           __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i$i);
           __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i$i);
          }
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          $$1$i263 = $2347;
          break;
         }
         HEAP32[$num1$i >> 2] = 0;
         HEAP32[$num1$i + 4 >> 2] = 0;
         HEAP32[$num1$i + 8 >> 2] = 0;
         if ($2309 << 24 >> 24 == 95) {
          $t12$0$i = $2308;
          label = 521;
         } else {
          $2382 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($2308, $last, $db) | 0;
          if (($2382 | 0) == ($2308 | 0)) {
           $t12$0$i = $2308;
           label = 521;
          } else {
           $2385 = $db + 4 | 0;
           $2386 = HEAP32[$2385 >> 2] | 0;
           if ((HEAP32[$db >> 2] | 0) != ($2386 | 0)) {
            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $2386 + -24 | 0);
            L689 : do if (!(HEAP8[$num1$i >> 0] & 1)) {
             HEAP8[$num1$i + 1 >> 0] = 0;
             HEAP8[$num1$i >> 0] = 0;
            } else {
             $2393 = $num1$i + 8 | 0;
             $2394 = HEAP32[$2393 >> 2] | 0;
             HEAP8[$2394 >> 0] = 0;
             $2395 = $num1$i + 4 | 0;
             HEAP32[$2395 >> 2] = 0;
             $2396 = HEAP32[$num1$i >> 2] | 0;
             $phitmp$i$i$i$i$i$i$i240 = ($2396 & -2) + -1 | 0;
             $2398 = $2396 & 255;
             do if (!($2398 & 1)) {
              $2402 = $2396 >>> 1 & 127;
              if (($2398 & 255) < 22) {
               _memcpy($num1$i + 1 | 0, $2394 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0;
               _free($2394);
               $$ph390 = $2402;
               break;
              }
              $2405 = $2402 + 16 & 240;
              $phitmp$i2$i$i$i$i$i$i243 = $2405 + -1 | 0;
              if (($phitmp$i2$i$i$i$i$i$i243 | 0) == ($phitmp$i$i$i$i$i$i$i240 | 0)) break L689;
              $2408 = _malloc($2405) | 0;
              if ($phitmp$i2$i$i$i$i$i$i243 >>> 0 <= $phitmp$i$i$i$i$i$i$i240 >>> 0 & ($2408 | 0) == 0) break L689;
              _memcpy($2408 | 0, $num1$i + 1 | 0, ($2396 >>> 1 & 127) + 1 | 0) | 0;
              HEAP32[$num1$i >> 2] = $2405 | 1;
              HEAP32[$2395 >> 2] = $2402;
              HEAP32[$2393 >> 2] = $2408;
              break L689;
             } else {
              HEAP8[$num1$i + 1 >> 0] = 0;
              _free($2394);
              $$ph390 = 0;
             } while (0);
             HEAP8[$num1$i >> 0] = $$ph390 << 1;
            } while (0);
            HEAP32[$num1$i >> 2] = HEAP32[$7 >> 2];
            HEAP32[$num1$i + 4 >> 2] = HEAP32[$7 + 4 >> 2];
            HEAP32[$num1$i + 8 >> 2] = HEAP32[$7 + 8 >> 2];
            HEAP32[$7 >> 2] = 0;
            HEAP32[$7 + 4 >> 2] = 0;
            HEAP32[$7 + 8 >> 2] = 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
            $2424 = HEAP32[$2385 >> 2] | 0;
            $2425 = $2424 + -24 | 0;
            $2427 = $2424;
            do {
             $2426 = $2427 + -24 | 0;
             HEAP32[$2385 >> 2] = $2426;
             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2426);
             $2427 = HEAP32[$2385 >> 2] | 0;
            } while (($2427 | 0) != ($2425 | 0));
            $t12$0$i = $2382;
            label = 521;
           }
          }
         }
         do if ((label | 0) == 521) {
          if (($t12$0$i | 0) == ($last | 0)) $$13$i259$ph = $first; else if ((HEAP8[$t12$0$i >> 0] | 0) == 95) {
           $2432 = $t12$0$i + 1 | 0;
           if (($2432 | 0) == ($last | 0)) $$13$i259$ph = $first; else {
            $2434 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($2432, $last, $db) | 0;
            if (($2434 | 0) == ($2432 | 0)) $$13$i259$ph = $first; else {
             $2438 = HEAP32[$db + 4 >> 2] | 0;
             if ((HEAP32[$db >> 2] | 0) == ($2438 | 0)) break;
             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($9, 12780, $num1$i);
             $2441 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($9, 12703) | 0;
             HEAP32[$8 >> 2] = HEAP32[$2441 >> 2];
             HEAP32[$8 + 4 >> 2] = HEAP32[$2441 + 4 >> 2];
             HEAP32[$8 + 8 >> 2] = HEAP32[$2441 + 8 >> 2];
             HEAP32[$2441 >> 2] = 0;
             HEAP32[$2441 + 4 >> 2] = 0;
             HEAP32[$2441 + 8 >> 2] = 0;
             $2444 = HEAP8[$8 >> 0] | 0;
             $2446 = ($2444 & 1) == 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2438 + -24 | 0, $2446 ? $8 + 1 | 0 : HEAP32[$8 + 8 >> 2] | 0, $2446 ? ($2444 & 255) >>> 1 : HEAP32[$8 + 4 >> 2] | 0) | 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);
             $$13$i259$ph = $2434;
            }
           }
          } else $$13$i259$ph = $first;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);
          $$1$i263 = $$13$i259$ph;
          break L662;
         } while (0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($num1$i);
         $$1$i263 = $first;
        } else $$1$i263 = $first; while (0);
        if (($$1$i263 | 0) == ($first | 0)) break L65;
        $2459 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($2459 | 0)) {
         $$0 = $first;
         break L1;
        }
        $2461 = $db + 16 | 0;
        HEAP32[$48 >> 2] = HEAP32[$db + 12 >> 2];
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($47, $2459 + -24 | 0, $48);
        $2465 = $db + 20 | 0;
        $2466 = HEAP32[$2465 >> 2] | 0;
        $2468 = HEAP32[$db + 24 >> 2] | 0;
        if ($2466 >>> 0 < $2468 >>> 0) {
         HEAP32[$2466 + 12 >> 2] = HEAP32[$47 + 12 >> 2];
         HEAP32[$2466 >> 2] = HEAP32[$47 >> 2];
         $2475 = $47 + 4 | 0;
         HEAP32[$2466 + 4 >> 2] = HEAP32[$2475 >> 2];
         $2477 = $47 + 8 | 0;
         HEAP32[$2466 + 8 >> 2] = HEAP32[$2477 >> 2];
         HEAP32[$2477 >> 2] = 0;
         HEAP32[$2475 >> 2] = 0;
         HEAP32[$47 >> 2] = 0;
         HEAP32[$2465 >> 2] = (HEAP32[$2465 >> 2] | 0) + 16;
        } else {
         $2485 = HEAP32[$2461 >> 2] | 0;
         $2486 = $2466 - $2485 | 0;
         $2487 = $2486 >> 4;
         $2488 = $2487 + 1 | 0;
         if (($2486 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2461);
         $2491 = $2468 - $2485 | 0;
         if ($2491 >> 4 >>> 0 < 1073741823) {
          $2494 = $2491 >> 3;
          $$0$i$i$i17 = $2494 >>> 0 < $2488 >>> 0 ? $2488 : $2494;
         } else $$0$i$i$i17 = 2147483647;
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i17, $2487, $db + 28 | 0);
         $2497 = $__v$i$i$i + 8 | 0;
         $2498 = HEAP32[$2497 >> 2] | 0;
         HEAP32[$2498 + 12 >> 2] = HEAP32[$47 + 12 >> 2];
         HEAP32[$2498 >> 2] = HEAP32[$47 >> 2];
         $2504 = $47 + 4 | 0;
         HEAP32[$2498 + 4 >> 2] = HEAP32[$2504 >> 2];
         $2506 = $47 + 8 | 0;
         HEAP32[$2498 + 8 >> 2] = HEAP32[$2506 >> 2];
         HEAP32[$2506 >> 2] = 0;
         HEAP32[$2504 >> 2] = 0;
         HEAP32[$47 >> 2] = 0;
         HEAP32[$2497 >> 2] = $2498 + 16;
         __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2461, $__v$i$i$i);
         __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
        }
        __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($47);
        $$0 = $$1$i263;
        break L1;
        break;
       }
      default:
       break L65;
      }
     }
     break;
    }
   default:
    {}
   } while (0);
   $2510 = __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   if (($2510 | 0) == ($first | 0)) {
    $2512 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    if (($2512 | 0) == ($first | 0)) $$0 = $first; else {
     $2516 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($2516 | 0)) $$0 = $first; else {
      $2518 = $db + 16 | 0;
      HEAP32[$50 >> 2] = HEAP32[$db + 12 >> 2];
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($49, $2516 + -24 | 0, $50);
      $2522 = $db + 20 | 0;
      $2523 = HEAP32[$2522 >> 2] | 0;
      $2525 = HEAP32[$db + 24 >> 2] | 0;
      if ($2523 >>> 0 < $2525 >>> 0) {
       HEAP32[$2523 + 12 >> 2] = HEAP32[$49 + 12 >> 2];
       HEAP32[$2523 >> 2] = HEAP32[$49 >> 2];
       $2532 = $49 + 4 | 0;
       HEAP32[$2523 + 4 >> 2] = HEAP32[$2532 >> 2];
       $2534 = $49 + 8 | 0;
       HEAP32[$2523 + 8 >> 2] = HEAP32[$2534 >> 2];
       HEAP32[$2534 >> 2] = 0;
       HEAP32[$2532 >> 2] = 0;
       HEAP32[$49 >> 2] = 0;
       HEAP32[$2522 >> 2] = (HEAP32[$2522 >> 2] | 0) + 16;
      } else {
       $2542 = HEAP32[$2518 >> 2] | 0;
       $2543 = $2523 - $2542 | 0;
       $2544 = $2543 >> 4;
       $2545 = $2544 + 1 | 0;
       if (($2543 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($2518);
       $2548 = $2525 - $2542 | 0;
       if ($2548 >> 4 >>> 0 < 1073741823) {
        $2551 = $2548 >> 3;
        $$0$i$i$i = $2551 >>> 0 < $2545 >>> 0 ? $2545 : $2551;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i$i, $$0$i$i$i, $2544, $db + 28 | 0);
       $2554 = $__v$i$i$i + 8 | 0;
       $2555 = HEAP32[$2554 >> 2] | 0;
       HEAP32[$2555 + 12 >> 2] = HEAP32[$49 + 12 >> 2];
       HEAP32[$2555 >> 2] = HEAP32[$49 >> 2];
       $2561 = $49 + 4 | 0;
       HEAP32[$2555 + 4 >> 2] = HEAP32[$2561 >> 2];
       $2563 = $49 + 8 | 0;
       HEAP32[$2555 + 8 >> 2] = HEAP32[$2563 >> 2];
       HEAP32[$2563 >> 2] = 0;
       HEAP32[$2561 >> 2] = 0;
       HEAP32[$49 >> 2] = 0;
       HEAP32[$2554 >> 2] = $2555 + 16;
       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($2518, $__v$i$i$i);
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i$i);
      }
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($49);
      $$0 = $2512;
     }
    }
   } else $$0 = $2510;
  } else $$0 = $195;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}
function __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i299 = 0, $$0$i$i$i$i348 = 0, $$0$i254 = 0, $$019$i = 0, $$02$i = 0, $$02$i310 = 0, $$02$i317 = 0, $$03$i = 0, $$03$i174 = 0, $$03$i189 = 0, $$03$i200 = 0, $$03$i211 = 0, $$03$i265 = 0, $$03$i456 = 0, $$03$i486 = 0, $$06$i = 0, $$06$i248 = 0, $$06$i345 = 0, $$06$i426 = 0, $$2$i302 = 0, $$2$i398 = 0, $$221$i = 0, $$311$i = 0, $$9$i = 0, $$first$i = 0, $$ph518 = 0, $$ph520524 = 0, $$phi$trans$insert = 0, $$pre$i$i$i = 0, $$pre$i$i$i$i = 0, $$pre$i$i$i$i372 = 0, $$pre$i$i$i$i436 = 0, $$pre$i$i$i$i466 = 0, $$pre$i$i$i87 = 0, $$pre$phi511Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1022 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $103 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1043 = 0, $1047 = 0, $1050 = 0, $1053 = 0, $106 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1076 = 0, $1079 = 0, $1081 = 0, $109 = 0, $1091 = 0, $1093 = 0, $11 = 0, $110 = 0, $1103 = 0, $1106 = 0, $1108 = 0, $112 = 0, $1120 = 0, $1122 = 0, $1129 = 0, $113 = 0, $1130 = 0, $1131 = 0, $1132 = 0, $1136 = 0, $1138 = 0, $1141 = 0, $1142 = 0, $1145 = 0, $1146 = 0, $1148 = 0, $1149 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1155 = 0, $1159 = 0, $1161 = 0, $1162 = 0, $1165 = 0, $1172 = 0, $1174 = 0, $1177 = 0, $1181 = 0, $1184 = 0, $1189 = 0, $1190 = 0, $1193 = 0, $1194 = 0, $1196 = 0, $1197 = 0, $12 = 0, $1206 = 0, $1209 = 0, $121 = 0, $1219 = 0, $122 = 0, $1220 = 0, $1222 = 0, $1223 = 0, $1225 = 0, $1226 = 0, $1231 = 0, $1232 = 0, $1234 = 0, $1235 = 0, $1237 = 0, $1238 = 0, $1240 = 0, $1244 = 0, $1245 = 0, $1247 = 0, $1251 = 0, $1253 = 0, $1254 = 0, $1257 = 0, $126 = 0, $1260 = 0, $1261 = 0, $1269 = 0, $1270 = 0, $1272 = 0, $1274 = 0, $1275 = 0, $128 = 0, $1283 = 0, $1284 = 0, $1285 = 0, $1286 = 0, $129 = 0, $1291 = 0, $1293 = 0, $13 = 0, $1306 = 0, $1307 = 0, $1309 = 0, $1311 = 0, $1313 = 0, $1314 = 0, $132 = 0, $1322 = 0, $1323 = 0, $1324 = 0, $1325 = 0, $1328 = 0, $1329 = 0, $1330 = 0, $1331 = 0, $1335 = 0, $1336 = 0, $1339 = 0, $1341 = 0, $1351 = 0, $1354 = 0, $1357 = 0, $1359 = 0, $1369 = 0, $1372 = 0, $1375 = 0, $1376 = 0, $1377 = 0, $1379 = 0, $1380 = 0, $1381 = 0, $1383 = 0, $1384 = 0, $1385 = 0, $1386 = 0, $1387 = 0, $139 = 0, $1398 = 0, $1399 = 0, $14 = 0, $1401 = 0, $1403 = 0, $1404 = 0, $141 = 0, $1412 = 0, $1413 = 0, $1414 = 0, $1415 = 0, $1417 = 0, $1418 = 0, $1421 = 0, $1424 = 0, $1426 = 0, $1436 = 0, $1439 = 0, $144 = 0, $1442 = 0, $1443 = 0, $1445 = 0, $1446 = 0, $1448 = 0, $1449 = 0, $1451 = 0, $1452 = 0, $1463 = 0, $1464 = 0, $1466 = 0, $1468 = 0, $1469 = 0, $1477 = 0, $1478 = 0, $1479 = 0, $148 = 0, $1480 = 0, $1482 = 0, $1483 = 0, $1486 = 0, $1489 = 0, $1491 = 0, $15 = 0, $1501 = 0, $1504 = 0, $151 = 0, $1513 = 0, $1514 = 0, $1523 = 0, $1524 = 0, $1528 = 0, $1530 = 0, $1531 = 0, $1534 = 0, $1543 = 0, $1544 = 0, $1548 = 0, $1550 = 0, $1551 = 0, $1554 = 0, $156 = 0, $1569 = 0, $157 = 0, $1572 = 0, $1578 = 0, $1579 = 0, $1581 = 0, $1585 = 0, $1591 = 0, $1593 = 0, $16 = 0, $160 = 0, $1603 = 0, $1604 = 0, $1605 = 0, $1609 = 0, $161 = 0, $1612 = 0, $1614 = 0, $1623 = 0, $1624 = 0, $1625 = 0, $1626 = 0, $163 = 0, $1632 = 0, $1634 = 0, $164 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1648 = 0, $1650 = 0, $1653 = 0, $1654 = 0, $1662 = 0, $1665 = 0, $1669 = 0, $1671 = 0, $1672 = 0, $1675 = 0, $1685 = 0, $1687 = 0, $1693 = 0, $1695 = 0, $1696 = 0, $1699 = 0, $17 = 0, $1702 = 0, $1703 = 0, $1705 = 0, $1712 = 0, $1713 = 0, $1714 = 0, $1715 = 0, $1719 = 0, $1721 = 0, $1724 = 0, $1725 = 0, $173 = 0, $1734 = 0, $1735 = 0, $1739 = 0, $1741 = 0, $1742 = 0, $1746 = 0, $1747 = 0, $1748 = 0, $1749 = 0, $1750 = 0, $1751 = 0, $176 = 0, $18 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $214 = 0, $217 = 0, $22 = 0, $222 = 0, $223 = 0, $226 = 0, $227 = 0, $229 = 0, $23 = 0, $230 = 0, $239 = 0, $24 = 0, $242 = 0, $25 = 0, $256 = 0, $257 = 0, $259 = 0, $26 = 0, $261 = 0, $262 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $275 = 0, $276 = 0, $279 = 0, $28 = 0, $282 = 0, $284 = 0, $29 = 0, $294 = 0, $297 = 0, $3 = 0, $30 = 0, $305 = 0, $306 = 0, $31 = 0, $310 = 0, $311 = 0, $314 = 0, $315 = 0, $317 = 0, $32 = 0, $327 = 0, $33 = 0, $330 = 0, $335 = 0, $337 = 0, $34 = 0, $340 = 0, $344 = 0, $347 = 0, $35 = 0, $352 = 0, $353 = 0, $356 = 0, $357 = 0, $359 = 0, $36 = 0, $360 = 0, $369 = 0, $37 = 0, $372 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $384 = 0, $388 = 0, $39 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $402 = 0, $41 = 0, $412 = 0, $416 = 0, $417 = 0, $419 = 0, $42 = 0, $420 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $436 = 0, $438 = 0, $44 = 0, $442 = 0, $443 = 0, $445 = 0, $449 = 0, $45 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $464 = 0, $466 = 0, $469 = 0, $47 = 0, $470 = 0, $473 = 0, $477 = 0, $48 = 0, $482 = 0, $483 = 0, $49 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $496 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $503 = 0, $505 = 0, $51 = 0, $515 = 0, $518 = 0, $52 = 0, $524 = 0, $525 = 0, $528 = 0, $529 = 0, $53 = 0, $531 = 0, $534 = 0, $539 = 0, $54 = 0, $541 = 0, $55 = 0, $551 = 0, $558 = 0, $56 = 0, $560 = 0, $563 = 0, $567 = 0, $57 = 0, $570 = 0, $575 = 0, $576 = 0, $579 = 0, $58 = 0, $580 = 0, $582 = 0, $583 = 0, $59 = 0, $592 = 0, $595 = 0, $6 = 0, $60 = 0, $606 = 0, $607 = 0, $609 = 0, $61 = 0, $611 = 0, $612 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0, $625 = 0, $626 = 0, $629 = 0, $63 = 0, $632 = 0, $634 = 0, $64 = 0, $644 = 0, $647 = 0, $65 = 0, $650 = 0, $651 = 0, $653 = 0, $654 = 0, $657 = 0, $658 = 0, $66 = 0, $660 = 0, $663 = 0, $668 = 0, $67 = 0, $670 = 0, $68 = 0, $680 = 0, $687 = 0, $689 = 0, $69 = 0, $692 = 0, $696 = 0, $699 = 0, $7 = 0, $70 = 0, $704 = 0, $705 = 0, $708 = 0, $709 = 0, $71 = 0, $711 = 0, $712 = 0, $72 = 0, $721 = 0, $724 = 0, $73 = 0, $736 = 0, $737 = 0, $739 = 0, $74 = 0, $741 = 0, $742 = 0, $75 = 0, $750 = 0, $751 = 0, $752 = 0, $753 = 0, $756 = 0, $758 = 0, $76 = 0, $77 = 0, $774 = 0, $775 = 0, $777 = 0, $779 = 0, $78 = 0, $780 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $794 = 0, $796 = 0, $8 = 0, $80 = 0, $806 = 0, $807 = 0, $809 = 0, $81 = 0, $810 = 0, $815 = 0, $816 = 0, $818 = 0, $819 = 0, $821 = 0, $822 = 0, $827 = 0, $828 = 0, $83 = 0, $830 = 0, $831 = 0, $836 = 0, $837 = 0, $839 = 0, $841 = 0, $842 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $857 = 0, $858 = 0, $861 = 0, $863 = 0, $873 = 0, $876 = 0, $879 = 0, $880 = 0, $881 = 0, $886 = 0, $887 = 0, $889 = 0, $890 = 0, $892 = 0, $893 = 0, $895 = 0, $896 = 0, $9 = 0, $90 = 0, $901 = 0, $902 = 0, $904 = 0, $905 = 0, $907 = 0, $908 = 0, $910 = 0, $911 = 0, $913 = 0, $917 = 0, $918 = 0, $920 = 0, $924 = 0, $926 = 0, $927 = 0, $930 = 0, $936 = 0, $940 = 0, $943 = 0, $945 = 0, $946 = 0, $947 = 0, $954 = 0, $955 = 0, $961 = 0, $976 = 0, $977 = 0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $989 = 0, $993 = 0, $996 = 0, $999 = 0, $has_expr_list$0$off0$i = 0, $has_expr_list$0$off0$i$lcssa = 0, $has_init$0$off0$i513 = 0, $k$0$i621 = 0, $k$0$i622 = 0, $k1$0$i618 = 0, $op1 = 0, $op18 = 0, $op2 = 0, $op27 = 0, $op3 = 0, $parsed_gs$0$off0 = 0, $parsed_gs$0$off0$i = 0, $phitmp$i$i$i$i$i$i$i273 = 0, $phitmp$i$i$i$i$i$i32$i = 0, $phitmp$i2$i$i$i$i$i$i276 = 0, $phitmp$i2$i$i$i$i$i35$i = 0, $t$0 = 0, $t$0$i = 0, $t$0$i267 = 0, $t$0$i349567 = 0, $t$0$i390$lcssa = 0, $t$0$i390556 = 0, $t$1$i = 0, $t$1$i$lcssa = 0, $t$1$i350 = 0, $t$2$i = 0, $t$2$i351 = 0, $t$3$i512 = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0, $t$1$i$looptemp = 0, $t$2$i$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 1168 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 1144 | 0;
 $1 = sp + 1120 | 0;
 $2 = sp + 1096 | 0;
 $3 = sp + 1084 | 0;
 $4 = sp + 1072 | 0;
 $5 = sp + 1048 | 0;
 $6 = sp + 1032 | 0;
 $7 = sp + 900 | 0;
 $8 = sp + 632 | 0;
 $9 = sp + 620 | 0;
 $10 = sp + 584 | 0;
 $11 = sp + 560 | 0;
 $12 = sp + 524 | 0;
 $13 = sp + 1020 | 0;
 $14 = sp + 1008 | 0;
 $15 = sp + 996 | 0;
 $16 = sp + 984 | 0;
 $17 = sp + 972 | 0;
 $18 = sp + 960 | 0;
 $19 = sp + 948 | 0;
 $20 = sp + 936 | 0;
 $21 = sp + 924 | 0;
 $22 = sp + 912 | 0;
 $23 = sp + 888 | 0;
 $24 = sp + 876 | 0;
 $25 = sp + 864 | 0;
 $26 = sp + 852 | 0;
 $27 = sp + 840 | 0;
 $28 = sp + 828 | 0;
 $29 = sp + 816 | 0;
 $30 = sp + 804 | 0;
 $31 = sp + 792 | 0;
 $32 = sp + 780 | 0;
 $33 = sp + 768 | 0;
 $34 = sp + 756 | 0;
 $35 = sp + 744 | 0;
 $op2 = sp + 732 | 0;
 $op1 = sp + 720 | 0;
 $36 = sp + 696 | 0;
 $37 = sp + 680 | 0;
 $38 = sp + 668 | 0;
 $39 = sp + 656 | 0;
 $40 = sp + 644 | 0;
 $41 = sp + 608 | 0;
 $42 = sp + 596 | 0;
 $43 = sp + 548 | 0;
 $44 = sp + 536 | 0;
 $45 = sp + 512 | 0;
 $46 = sp + 500 | 0;
 $47 = sp + 488 | 0;
 $48 = sp + 476 | 0;
 $49 = sp + 464 | 0;
 $50 = sp + 440 | 0;
 $51 = sp + 424 | 0;
 $52 = sp + 412 | 0;
 $53 = sp + 400 | 0;
 $54 = sp + 388 | 0;
 $55 = sp + 376 | 0;
 $56 = sp + 364 | 0;
 $57 = sp + 352 | 0;
 $58 = sp + 340 | 0;
 $59 = sp + 328 | 0;
 $60 = sp + 316 | 0;
 $61 = sp + 304 | 0;
 $62 = sp + 292 | 0;
 $63 = sp + 280 | 0;
 $64 = sp + 256 | 0;
 $65 = sp + 240 | 0;
 $66 = sp + 228 | 0;
 $67 = sp + 216 | 0;
 $68 = sp + 204 | 0;
 $op3 = sp + 192 | 0;
 $op27 = sp + 180 | 0;
 $op18 = sp + 168 | 0;
 $69 = sp + 144 | 0;
 $70 = sp + 132 | 0;
 $71 = sp + 120 | 0;
 $72 = sp + 108 | 0;
 $73 = sp + 96 | 0;
 $74 = sp + 84 | 0;
 $75 = sp + 72 | 0;
 $76 = sp + 60 | 0;
 $77 = sp + 48 | 0;
 $78 = sp + 36 | 0;
 $79 = sp + 24 | 0;
 $80 = sp;
 $81 = $last;
 $83 = $81 - $first | 0;
 L1 : do if (($83 | 0) > 1) {
  $85 = ($83 | 0) > 3;
  if ($85) if ((HEAP8[$first >> 0] | 0) == 103) {
   $90 = (HEAP8[$first + 1 >> 0] | 0) == 115;
   $parsed_gs$0$off0 = $90;
   $t$0 = $90 ? $first + 2 | 0 : $first;
  } else {
   $parsed_gs$0$off0 = 0;
   $t$0 = $first;
  } else {
   $parsed_gs$0$off0 = 0;
   $t$0 = $first;
  }
  do switch (HEAP8[$t$0 >> 0] | 0) {
  case 76:
   {
    $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    break L1;
    break;
   }
  case 84:
   {
    $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    break L1;
    break;
   }
  case 102:
   {
    $$0 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    break L1;
    break;
   }
  case 97:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 97:
     {
      $100 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 12743, 2);
      $101 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($100, $last, $13, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13);
      $$0 = ($101 | 0) == ($100 | 0) ? $first : $101;
      break L1;
      break;
     }
    case 100:
     {
      $103 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 12764, 1);
      $104 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($103, $last, $14, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14);
      $$0 = ($104 | 0) == ($103 | 0) ? $first : $104;
      break L1;
      break;
     }
    case 110:
     {
      $106 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 12764, 1);
      $107 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($106, $last, $15, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15);
      $$0 = ($107 | 0) == ($106 | 0) ? $first : $107;
      break L1;
      break;
     }
    case 78:
     {
      $109 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13889, 2);
      $110 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($109, $last, $16, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16);
      $$0 = ($110 | 0) == ($109 | 0) ? $first : $110;
      break L1;
      break;
     }
    case 83:
     {
      $112 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13892, 1);
      $113 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($112, $last, $17, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17);
      $$0 = ($113 | 0) == ($112 | 0) ? $first : $113;
      break L1;
      break;
     }
    case 116:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {
       $121 = $first + 2 | 0;
       $122 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($121, $last, $db) | 0;
       if (($122 | 0) == ($121 | 0)) $$03$i486 = $first; else {
        $126 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($126 | 0)) $$03$i486 = $first; else {
         $128 = $126 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $128);
         $129 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13894) | 0;
         HEAP32[$1 >> 2] = HEAP32[$129 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$129 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$129 + 8 >> 2];
         HEAP32[$129 >> 2] = 0;
         HEAP32[$129 + 4 >> 2] = 0;
         HEAP32[$129 + 8 >> 2] = 0;
         $132 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
         HEAP32[$0 >> 2] = HEAP32[$132 >> 2];
         HEAP32[$0 + 4 >> 2] = HEAP32[$132 + 4 >> 2];
         HEAP32[$0 + 8 >> 2] = HEAP32[$132 + 8 >> 2];
         HEAP32[$132 >> 2] = 0;
         HEAP32[$132 + 4 >> 2] = 0;
         HEAP32[$132 + 8 >> 2] = 0;
         do if (!(HEAP8[$128 >> 0] & 1)) {
          HEAP8[$128 + 1 >> 0] = 0;
          HEAP8[$128 >> 0] = 0;
         } else {
          $139 = $126 + -16 | 0;
          HEAP8[HEAP32[$139 >> 2] >> 0] = 0;
          $141 = $126 + -20 | 0;
          HEAP32[$141 >> 2] = 0;
          $$pre$i$i$i$i466 = HEAP8[$128 >> 0] | 0;
          if (!($$pre$i$i$i$i466 & 1)) {
           $148 = $$pre$i$i$i$i466;
           $157 = 10;
          } else {
           $144 = HEAP32[$128 >> 2] | 0;
           $148 = $144 & 255;
           $157 = ($144 & -2) + -1 | 0;
          }
          if (!($148 & 1)) {
           $151 = ($148 & 255) >>> 1;
           if (($148 & 255) < 22) {
            $156 = 10;
            $1746 = 1;
            $176 = $151;
           } else {
            $156 = ($151 + 16 & 240) + -1 | 0;
            $1746 = 1;
            $176 = $151;
           }
          } else {
           $156 = 10;
           $1746 = 0;
           $176 = 0;
          }
          if (($156 | 0) != ($157 | 0)) {
           if (($156 | 0) == 10) {
            $163 = $128 + 1 | 0;
            $164 = HEAP32[$139 >> 2] | 0;
            if ($1746) {
             _memcpy($163 | 0, $164 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0;
             _free($164);
            } else {
             HEAP8[$163 >> 0] = HEAP8[$164 >> 0] | 0;
             _free($164);
            }
            HEAP8[$128 >> 0] = $176 << 1;
            break;
           }
           $160 = $156 + 1 | 0;
           $161 = _malloc($160) | 0;
           if (!($156 >>> 0 <= $157 >>> 0 & ($161 | 0) == 0)) {
            if ($1746) _memcpy($161 | 0, $128 + 1 | 0, (($148 & 255) >>> 1) + 1 | 0) | 0; else {
             $173 = HEAP32[$139 >> 2] | 0;
             HEAP8[$161 >> 0] = HEAP8[$173 >> 0] | 0;
             _free($173);
            }
            HEAP32[$128 >> 2] = $160 | 1;
            HEAP32[$141 >> 2] = $176;
            HEAP32[$139 >> 2] = $161;
           }
          }
         } while (0);
         HEAP32[$128 >> 2] = HEAP32[$0 >> 2];
         HEAP32[$128 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
         HEAP32[$128 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
         HEAP32[$0 >> 2] = 0;
         HEAP32[$0 + 4 >> 2] = 0;
         HEAP32[$0 + 8 >> 2] = 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         $$03$i486 = $122;
        }
       }
      } else $$03$i486 = $first; else $$03$i486 = $first; else $$03$i486 = $first;
      $$0 = $$03$i486;
      break L1;
      break;
     }
    case 122:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 97) if ((HEAP8[$first + 1 >> 0] | 0) == 122) {
       $187 = $first + 2 | 0;
       $188 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($187, $last, $db) | 0;
       if (($188 | 0) == ($187 | 0)) $$03$i456 = $first; else {
        $192 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($192 | 0)) $$03$i456 = $first; else {
         $194 = $192 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $194);
         $195 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 13894) | 0;
         HEAP32[$1 >> 2] = HEAP32[$195 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$195 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$195 + 8 >> 2];
         HEAP32[$195 >> 2] = 0;
         HEAP32[$195 + 4 >> 2] = 0;
         HEAP32[$195 + 8 >> 2] = 0;
         $198 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
         HEAP32[$0 >> 2] = HEAP32[$198 >> 2];
         HEAP32[$0 + 4 >> 2] = HEAP32[$198 + 4 >> 2];
         HEAP32[$0 + 8 >> 2] = HEAP32[$198 + 8 >> 2];
         HEAP32[$198 >> 2] = 0;
         HEAP32[$198 + 4 >> 2] = 0;
         HEAP32[$198 + 8 >> 2] = 0;
         do if (!(HEAP8[$194 >> 0] & 1)) {
          HEAP8[$194 + 1 >> 0] = 0;
          HEAP8[$194 >> 0] = 0;
         } else {
          $205 = $192 + -16 | 0;
          HEAP8[HEAP32[$205 >> 2] >> 0] = 0;
          $207 = $192 + -20 | 0;
          HEAP32[$207 >> 2] = 0;
          $$pre$i$i$i$i436 = HEAP8[$194 >> 0] | 0;
          if (!($$pre$i$i$i$i436 & 1)) {
           $214 = $$pre$i$i$i$i436;
           $223 = 10;
          } else {
           $210 = HEAP32[$194 >> 2] | 0;
           $214 = $210 & 255;
           $223 = ($210 & -2) + -1 | 0;
          }
          if (!($214 & 1)) {
           $217 = ($214 & 255) >>> 1;
           if (($214 & 255) < 22) {
            $1747 = 1;
            $222 = 10;
            $242 = $217;
           } else {
            $1747 = 1;
            $222 = ($217 + 16 & 240) + -1 | 0;
            $242 = $217;
           }
          } else {
           $1747 = 0;
           $222 = 10;
           $242 = 0;
          }
          if (($222 | 0) != ($223 | 0)) {
           if (($222 | 0) == 10) {
            $229 = $194 + 1 | 0;
            $230 = HEAP32[$205 >> 2] | 0;
            if ($1747) {
             _memcpy($229 | 0, $230 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0;
             _free($230);
            } else {
             HEAP8[$229 >> 0] = HEAP8[$230 >> 0] | 0;
             _free($230);
            }
            HEAP8[$194 >> 0] = $242 << 1;
            break;
           }
           $226 = $222 + 1 | 0;
           $227 = _malloc($226) | 0;
           if (!($222 >>> 0 <= $223 >>> 0 & ($227 | 0) == 0)) {
            if ($1747) _memcpy($227 | 0, $194 + 1 | 0, (($214 & 255) >>> 1) + 1 | 0) | 0; else {
             $239 = HEAP32[$205 >> 2] | 0;
             HEAP8[$227 >> 0] = HEAP8[$239 >> 0] | 0;
             _free($239);
            }
            HEAP32[$194 >> 2] = $226 | 1;
            HEAP32[$207 >> 2] = $242;
            HEAP32[$205 >> 2] = $227;
           }
          }
         } while (0);
         HEAP32[$194 >> 2] = HEAP32[$0 >> 2];
         HEAP32[$194 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
         HEAP32[$194 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
         HEAP32[$0 >> 2] = 0;
         HEAP32[$0 + 4 >> 2] = 0;
         HEAP32[$0 + 8 >> 2] = 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         $$03$i456 = $188;
        }
       }
      } else $$03$i456 = $first; else $$03$i456 = $first; else $$03$i456 = $first;
      $$0 = $$03$i456;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 99:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 99:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {
       $256 = $first + 2 | 0;
       $257 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($256, $last, $db) | 0;
       if (($257 | 0) == ($256 | 0)) $$06$i426 = $first; else {
        $259 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($257, $last, $db) | 0;
        if (($259 | 0) == ($257 | 0)) $$06$i426 = $first; else {
         $261 = $db + 4 | 0;
         $262 = HEAP32[$261 >> 2] | 0;
         if ((($262 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i426 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $262 + -24 | 0);
          $270 = HEAP32[$261 >> 2] | 0;
          $271 = $270 + -24 | 0;
          $273 = $270;
          do {
           $272 = $273 + -24 | 0;
           HEAP32[$261 >> 2] = $272;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272);
           $273 = HEAP32[$261 >> 2] | 0;
          } while (($273 | 0) != ($271 | 0));
          $275 = $270 + -48 | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $275);
          $276 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13904) | 0;
          HEAP32[$5 >> 2] = HEAP32[$276 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$276 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$276 + 8 >> 2];
          HEAP32[$276 >> 2] = 0;
          HEAP32[$276 + 4 >> 2] = 0;
          HEAP32[$276 + 8 >> 2] = 0;
          $279 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0;
          HEAP32[$4 >> 2] = HEAP32[$279 >> 2];
          HEAP32[$4 + 4 >> 2] = HEAP32[$279 + 4 >> 2];
          HEAP32[$4 + 8 >> 2] = HEAP32[$279 + 8 >> 2];
          HEAP32[$279 >> 2] = 0;
          HEAP32[$279 + 4 >> 2] = 0;
          HEAP32[$279 + 8 >> 2] = 0;
          $282 = HEAP8[$0 >> 0] | 0;
          $284 = ($282 & 1) == 0;
          $294 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $284 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $284 ? ($282 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
          HEAP32[$3 >> 2] = HEAP32[$294 >> 2];
          HEAP32[$3 + 4 >> 2] = HEAP32[$294 + 4 >> 2];
          HEAP32[$3 + 8 >> 2] = HEAP32[$294 + 8 >> 2];
          HEAP32[$294 >> 2] = 0;
          HEAP32[$294 + 4 >> 2] = 0;
          HEAP32[$294 + 8 >> 2] = 0;
          $297 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0;
          HEAP32[$2 >> 2] = HEAP32[$297 >> 2];
          HEAP32[$2 + 4 >> 2] = HEAP32[$297 + 4 >> 2];
          HEAP32[$2 + 8 >> 2] = HEAP32[$297 + 8 >> 2];
          HEAP32[$297 >> 2] = 0;
          HEAP32[$297 + 4 >> 2] = 0;
          HEAP32[$297 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($275, $1);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$06$i426 = $259;
         }
        }
       }
      } else $$06$i426 = $first; else $$06$i426 = $first; else $$06$i426 = $first;
      $$0 = $$06$i426;
      break L1;
      break;
     }
    case 108:
     {
      L97 : do if ($85) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 108) {
       $305 = $first + 2 | 0;
       $306 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($305, $last, $db) | 0;
       if (($306 | 0) == ($305 | 0) | ($306 | 0) == ($last | 0)) $$2$i398 = $first; else {
        $310 = $db + 4 | 0;
        $311 = HEAP32[$310 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($311 | 0)) $$2$i398 = $first; else {
         $314 = $311 + -12 | 0;
         $315 = HEAP8[$314 >> 0] | 0;
         $317 = ($315 & 1) == 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($311 + -24 | 0, $317 ? $314 + 1 | 0 : HEAP32[$311 + -4 >> 2] | 0, $317 ? ($315 & 255) >>> 1 : HEAP32[$311 + -8 >> 2] | 0) | 0;
         $327 = HEAP32[$310 >> 2] | 0;
         HEAP32[$0 >> 2] = 0;
         HEAP32[$0 + 4 >> 2] = 0;
         HEAP32[$0 + 8 >> 2] = 0;
         $330 = $327 + -12 | 0;
         do if (!(HEAP8[$330 >> 0] & 1)) {
          HEAP8[$330 + 1 >> 0] = 0;
          HEAP8[$330 >> 0] = 0;
         } else {
          $335 = $327 + -4 | 0;
          HEAP8[HEAP32[$335 >> 2] >> 0] = 0;
          $337 = $327 + -8 | 0;
          HEAP32[$337 >> 2] = 0;
          $$pre$i$i$i$i372 = HEAP8[$330 >> 0] | 0;
          if (!($$pre$i$i$i$i372 & 1)) {
           $344 = $$pre$i$i$i$i372;
           $353 = 10;
          } else {
           $340 = HEAP32[$330 >> 2] | 0;
           $344 = $340 & 255;
           $353 = ($340 & -2) + -1 | 0;
          }
          if (!($344 & 1)) {
           $347 = ($344 & 255) >>> 1;
           if (($344 & 255) < 22) {
            $1748 = 1;
            $352 = 10;
            $372 = $347;
           } else {
            $1748 = 1;
            $352 = ($347 + 16 & 240) + -1 | 0;
            $372 = $347;
           }
          } else {
           $1748 = 0;
           $352 = 10;
           $372 = 0;
          }
          if (($352 | 0) != ($353 | 0)) {
           if (($352 | 0) == 10) {
            $359 = $330 + 1 | 0;
            $360 = HEAP32[$335 >> 2] | 0;
            if ($1748) {
             _memcpy($359 | 0, $360 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0;
             _free($360);
            } else {
             HEAP8[$359 >> 0] = HEAP8[$360 >> 0] | 0;
             _free($360);
            }
            HEAP8[$330 >> 0] = $372 << 1;
            break;
           }
           $356 = $352 + 1 | 0;
           $357 = _malloc($356) | 0;
           if (!($352 >>> 0 <= $353 >>> 0 & ($357 | 0) == 0)) {
            if ($1748) _memcpy($357 | 0, $330 + 1 | 0, (($344 & 255) >>> 1) + 1 | 0) | 0; else {
             $369 = HEAP32[$335 >> 2] | 0;
             HEAP8[$357 >> 0] = HEAP8[$369 >> 0] | 0;
             _free($369);
            }
            HEAP32[$330 >> 2] = $356 | 1;
            HEAP32[$337 >> 2] = $372;
            HEAP32[$335 >> 2] = $357;
           }
          }
         } while (0);
         HEAP32[$330 >> 2] = HEAP32[$0 >> 2];
         HEAP32[$330 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
         HEAP32[$330 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
         HEAP32[$0 >> 2] = 0;
         HEAP32[$0 + 4 >> 2] = 0;
         HEAP32[$0 + 8 >> 2] = 0;
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$310 >> 2] | 0) + -24 | 0, 12714) | 0;
         $379 = $1 + 4 | 0;
         $380 = $1 + 8 | 0;
         $381 = $1 + 1 | 0;
         L127 : do if ((HEAP8[$306 >> 0] | 0) == 69) $t$0$i390$lcssa = $306; else {
          $t$0$i390556 = $306;
          while (1) {
           $384 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i390556, $last, $db) | 0;
           if (($384 | 0) == ($t$0$i390556 | 0) | ($384 | 0) == ($last | 0)) {
            $$2$i398 = $first;
            break L97;
           }
           $388 = HEAP32[$310 >> 2] | 0;
           if ((HEAP32[$db >> 2] | 0) == ($388 | 0)) {
            $$2$i398 = $first;
            break L97;
           }
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $388 + -24 | 0);
           $391 = HEAP32[$310 >> 2] | 0;
           $392 = $391 + -24 | 0;
           $394 = $391;
           do {
            $393 = $394 + -24 | 0;
            HEAP32[$310 >> 2] = $393;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($393);
            $394 = HEAP32[$310 >> 2] | 0;
           } while (($394 | 0) != ($392 | 0));
           $396 = HEAP8[$1 >> 0] | 0;
           $398 = ($396 & 1) == 0;
           $402 = $398 ? ($396 & 255) >>> 1 : HEAP32[$379 >> 2] | 0;
           if ($402) {
            if ((HEAP32[$db >> 2] | 0) == ($392 | 0)) break;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($391 + -48 | 0, $398 ? $381 : HEAP32[$380 >> 2] | 0, $402) | 0;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
           if ((HEAP8[$384 >> 0] | 0) == 69) {
            $t$0$i390$lcssa = $384;
            break L127;
           } else $t$0$i390556 = $384;
          }
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
          $$2$i398 = $first;
          break L97;
         } while (0);
         $412 = HEAP32[$310 >> 2] | 0;
         if ((HEAP32[$db >> 2] | 0) == ($412 | 0)) $$2$i398 = $first; else {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($412 + -24 | 0, 12619) | 0;
          $$2$i398 = $t$0$i390$lcssa + 1 | 0;
         }
        }
       }
      } else $$2$i398 = $first; else $$2$i398 = $first; else $$2$i398 = $first; while (0);
      $$0 = $$2$i398;
      break L1;
      break;
     }
    case 109:
     {
      $416 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13919, 1);
      $417 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($416, $last, $18, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18);
      $$0 = ($417 | 0) == ($416 | 0) ? $first : $417;
      break L1;
      break;
     }
    case 111:
     {
      $419 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($19, 12928, 1);
      $420 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($419, $last, $19, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($19);
      $$0 = ($420 | 0) == ($419 | 0) ? $first : $420;
      break L1;
      break;
     }
    case 118:
     {
      L146 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 99) if ((HEAP8[$first + 1 >> 0] | 0) == 118) {
       $428 = $db + 63 | 0;
       $429 = HEAP8[$428 >> 0] | 0;
       HEAP8[$428 >> 0] = 0;
       $430 = $first + 2 | 0;
       $431 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($430, $last, $db) | 0;
       HEAP8[$428 >> 0] = $429;
       if (($431 | 0) == ($430 | 0) | ($431 | 0) == ($last | 0)) $$311$i = $first; else {
        if ((HEAP8[$431 >> 0] | 0) == 95) {
         $438 = $431 + 1 | 0;
         if (($438 | 0) == ($last | 0)) {
          $$311$i = $first;
          break;
         }
         do if ((HEAP8[$438 >> 0] | 0) == 69) {
          $442 = $db + 4 | 0;
          $443 = HEAP32[$442 >> 2] | 0;
          $445 = HEAP32[$db + 8 >> 2] | 0;
          if ($443 >>> 0 < $445 >>> 0) {
           HEAP32[$443 >> 2] = 0;
           HEAP32[$443 + 4 >> 2] = 0;
           HEAP32[$443 + 8 >> 2] = 0;
           HEAP32[$443 + 12 >> 2] = 0;
           HEAP32[$443 + 16 >> 2] = 0;
           HEAP32[$443 + 20 >> 2] = 0;
           HEAP32[$443 >> 2] = 0;
           HEAP32[$443 + 4 >> 2] = 0;
           HEAP32[$443 + 8 >> 2] = 0;
           $449 = $443 + 12 | 0;
           HEAP32[$449 >> 2] = 0;
           HEAP32[$449 + 4 >> 2] = 0;
           HEAP32[$449 + 8 >> 2] = 0;
           HEAP32[$442 >> 2] = (HEAP32[$442 >> 2] | 0) + 24;
           $t$1$i350 = $438;
           break;
          }
          $457 = HEAP32[$db >> 2] | 0;
          $458 = $443 - $457 | 0;
          $459 = ($458 | 0) / 24 | 0;
          $460 = $459 + 1 | 0;
          if (($458 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
          $464 = ($445 - $457 | 0) / 24 | 0;
          if ($464 >>> 0 < 1073741823) {
           $466 = $464 << 1;
           $$0$i$i$i$i348 = $466 >>> 0 < $460 >>> 0 ? $460 : $466;
          } else $$0$i$i$i$i348 = 2147483647;
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i348, $459, $db + 12 | 0);
          $469 = $0 + 8 | 0;
          $470 = HEAP32[$469 >> 2] | 0;
          HEAP32[$470 >> 2] = 0;
          HEAP32[$470 + 4 >> 2] = 0;
          HEAP32[$470 + 8 >> 2] = 0;
          HEAP32[$470 + 12 >> 2] = 0;
          HEAP32[$470 + 16 >> 2] = 0;
          HEAP32[$470 + 20 >> 2] = 0;
          HEAP32[$470 >> 2] = 0;
          HEAP32[$470 + 4 >> 2] = 0;
          HEAP32[$470 + 8 >> 2] = 0;
          $473 = $470 + 12 | 0;
          HEAP32[$473 >> 2] = 0;
          HEAP32[$473 + 4 >> 2] = 0;
          HEAP32[$473 + 8 >> 2] = 0;
          HEAP32[$469 >> 2] = $470 + 24;
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
          $t$1$i350 = $438;
         } else {
          $t$0$i349567 = $438;
          while (1) {
           $477 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$0$i349567, $last, $db) | 0;
           if (($477 | 0) == ($t$0$i349567 | 0) | ($477 | 0) == ($last | 0)) {
            $$311$i = $first;
            break L146;
           }
           if ((HEAP8[$477 >> 0] | 0) == 69) {
            $t$1$i350 = $477;
            break;
           } else $t$0$i349567 = $477;
          }
         } while (0);
         $t$2$i351 = $t$1$i350 + 1 | 0;
        } else {
         $436 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($431, $last, $db) | 0;
         if (($436 | 0) == ($431 | 0)) {
          $$311$i = $first;
          break;
         } else $t$2$i351 = $436;
        }
        $482 = $db + 4 | 0;
        $483 = HEAP32[$482 >> 2] | 0;
        if ((($483 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$311$i = $first; else {
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($1, $483 + -24 | 0);
         $491 = HEAP32[$482 >> 2] | 0;
         $492 = $491 + -24 | 0;
         $494 = $491;
         do {
          $493 = $494 + -24 | 0;
          HEAP32[$482 >> 2] = $493;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($493);
          $494 = HEAP32[$482 >> 2] | 0;
         } while (($494 | 0) != ($492 | 0));
         $496 = $491 + -48 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($7, $496);
         $497 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($7, 0, 12714) | 0;
         HEAP32[$6 >> 2] = HEAP32[$497 >> 2];
         HEAP32[$6 + 4 >> 2] = HEAP32[$497 + 4 >> 2];
         HEAP32[$6 + 8 >> 2] = HEAP32[$497 + 8 >> 2];
         HEAP32[$497 >> 2] = 0;
         HEAP32[$497 + 4 >> 2] = 0;
         HEAP32[$497 + 8 >> 2] = 0;
         $500 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 13921) | 0;
         HEAP32[$5 >> 2] = HEAP32[$500 >> 2];
         HEAP32[$5 + 4 >> 2] = HEAP32[$500 + 4 >> 2];
         HEAP32[$5 + 8 >> 2] = HEAP32[$500 + 8 >> 2];
         HEAP32[$500 >> 2] = 0;
         HEAP32[$500 + 4 >> 2] = 0;
         HEAP32[$500 + 8 >> 2] = 0;
         $503 = HEAP8[$1 >> 0] | 0;
         $505 = ($503 & 1) == 0;
         $515 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($5, $505 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $505 ? ($503 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;
         HEAP32[$4 >> 2] = HEAP32[$515 >> 2];
         HEAP32[$4 + 4 >> 2] = HEAP32[$515 + 4 >> 2];
         HEAP32[$4 + 8 >> 2] = HEAP32[$515 + 8 >> 2];
         HEAP32[$515 >> 2] = 0;
         HEAP32[$515 + 4 >> 2] = 0;
         HEAP32[$515 + 8 >> 2] = 0;
         $518 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($4, 12619) | 0;
         HEAP32[$3 >> 2] = HEAP32[$518 >> 2];
         HEAP32[$3 + 4 >> 2] = HEAP32[$518 + 4 >> 2];
         HEAP32[$3 + 8 >> 2] = HEAP32[$518 + 8 >> 2];
         HEAP32[$518 >> 2] = 0;
         HEAP32[$518 + 4 >> 2] = 0;
         HEAP32[$518 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($496, $2);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         $$311$i = $t$2$i351;
        }
       }
      } else $$311$i = $first; else $$311$i = $first; else $$311$i = $first; while (0);
      $$0 = $$311$i;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 100:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 97:
     {
      $524 = $t$0 + 2 | 0;
      $525 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($524, $last, $db) | 0;
      if (($525 | 0) == ($524 | 0)) {
       $$0 = $first;
       break L1;
      }
      $528 = $db + 4 | 0;
      $529 = HEAP32[$528 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($529 | 0)) {
       $$0 = $first;
       break L1;
      }
      $531 = $529 + -24 | 0;
      if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($22, 12902, 2); else {
       HEAP32[$22 >> 2] = 0;
       HEAP32[$22 + 4 >> 2] = 0;
       HEAP32[$22 + 8 >> 2] = 0;
      }
      $534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 13924) | 0;
      HEAP32[$21 >> 2] = HEAP32[$534 >> 2];
      HEAP32[$21 + 4 >> 2] = HEAP32[$534 + 4 >> 2];
      HEAP32[$21 + 8 >> 2] = HEAP32[$534 + 8 >> 2];
      HEAP32[$534 >> 2] = 0;
      HEAP32[$534 + 4 >> 2] = 0;
      HEAP32[$534 + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, (HEAP32[$528 >> 2] | 0) + -24 | 0);
      $539 = HEAP8[$23 >> 0] | 0;
      $541 = ($539 & 1) == 0;
      $551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $541 ? $23 + 1 | 0 : HEAP32[$23 + 8 >> 2] | 0, $541 ? ($539 & 255) >>> 1 : HEAP32[$23 + 4 >> 2] | 0) | 0;
      HEAP32[$20 >> 2] = HEAP32[$551 >> 2];
      HEAP32[$20 + 4 >> 2] = HEAP32[$551 + 4 >> 2];
      HEAP32[$20 + 8 >> 2] = HEAP32[$551 + 8 >> 2];
      HEAP32[$551 >> 2] = 0;
      HEAP32[$551 + 4 >> 2] = 0;
      HEAP32[$551 + 8 >> 2] = 0;
      do if (!(HEAP8[$531 >> 0] & 1)) {
       HEAP8[$531 + 1 >> 0] = 0;
       HEAP8[$531 >> 0] = 0;
      } else {
       $558 = $529 + -16 | 0;
       HEAP8[HEAP32[$558 >> 2] >> 0] = 0;
       $560 = $529 + -20 | 0;
       HEAP32[$560 >> 2] = 0;
       $$pre$i$i$i = HEAP8[$531 >> 0] | 0;
       if (!($$pre$i$i$i & 1)) {
        $567 = $$pre$i$i$i;
        $576 = 10;
       } else {
        $563 = HEAP32[$531 >> 2] | 0;
        $567 = $563 & 255;
        $576 = ($563 & -2) + -1 | 0;
       }
       if (!($567 & 1)) {
        $570 = ($567 & 255) >>> 1;
        if (($567 & 255) < 22) {
         $1749 = 1;
         $575 = 10;
         $595 = $570;
        } else {
         $1749 = 1;
         $575 = ($570 + 16 & 240) + -1 | 0;
         $595 = $570;
        }
       } else {
        $1749 = 0;
        $575 = 10;
        $595 = 0;
       }
       if (($575 | 0) != ($576 | 0)) {
        if (($575 | 0) == 10) {
         $582 = $531 + 1 | 0;
         $583 = HEAP32[$558 >> 2] | 0;
         if ($1749) {
          _memcpy($582 | 0, $583 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0;
          _free($583);
         } else {
          HEAP8[$582 >> 0] = HEAP8[$583 >> 0] | 0;
          _free($583);
         }
         HEAP8[$531 >> 0] = $595 << 1;
         break;
        }
        $579 = $575 + 1 | 0;
        $580 = _malloc($579) | 0;
        if (!($575 >>> 0 <= $576 >>> 0 & ($580 | 0) == 0)) {
         if ($1749) _memcpy($580 | 0, $531 + 1 | 0, (($567 & 255) >>> 1) + 1 | 0) | 0; else {
          $592 = HEAP32[$558 >> 2] | 0;
          HEAP8[$580 >> 0] = HEAP8[$592 >> 0] | 0;
          _free($592);
         }
         HEAP32[$531 >> 2] = $579 | 1;
         HEAP32[$560 >> 2] = $595;
         HEAP32[$558 >> 2] = $580;
        }
       }
      } while (0);
      HEAP32[$531 >> 2] = HEAP32[$20 >> 2];
      HEAP32[$531 + 4 >> 2] = HEAP32[$20 + 4 >> 2];
      HEAP32[$531 + 8 >> 2] = HEAP32[$20 + 8 >> 2];
      HEAP32[$20 >> 2] = 0;
      HEAP32[$20 + 4 >> 2] = 0;
      HEAP32[$20 + 8 >> 2] = 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);
      $$0 = $525;
      break L1;
      break;
     }
    case 99:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {
       $606 = $first + 2 | 0;
       $607 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($606, $last, $db) | 0;
       if (($607 | 0) == ($606 | 0)) $$06$i345 = $first; else {
        $609 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($607, $last, $db) | 0;
        if (($609 | 0) == ($607 | 0)) $$06$i345 = $first; else {
         $611 = $db + 4 | 0;
         $612 = HEAP32[$611 >> 2] | 0;
         if ((($612 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i345 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $612 + -24 | 0);
          $620 = HEAP32[$611 >> 2] | 0;
          $621 = $620 + -24 | 0;
          $623 = $620;
          do {
           $622 = $623 + -24 | 0;
           HEAP32[$611 >> 2] = $622;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($622);
           $623 = HEAP32[$611 >> 2] | 0;
          } while (($623 | 0) != ($621 | 0));
          $625 = $620 + -48 | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $625);
          $626 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 13934) | 0;
          HEAP32[$5 >> 2] = HEAP32[$626 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$626 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$626 + 8 >> 2];
          HEAP32[$626 >> 2] = 0;
          HEAP32[$626 + 4 >> 2] = 0;
          HEAP32[$626 + 8 >> 2] = 0;
          $629 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0;
          HEAP32[$4 >> 2] = HEAP32[$629 >> 2];
          HEAP32[$4 + 4 >> 2] = HEAP32[$629 + 4 >> 2];
          HEAP32[$4 + 8 >> 2] = HEAP32[$629 + 8 >> 2];
          HEAP32[$629 >> 2] = 0;
          HEAP32[$629 + 4 >> 2] = 0;
          HEAP32[$629 + 8 >> 2] = 0;
          $632 = HEAP8[$0 >> 0] | 0;
          $634 = ($632 & 1) == 0;
          $644 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $634 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $634 ? ($632 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
          HEAP32[$3 >> 2] = HEAP32[$644 >> 2];
          HEAP32[$3 + 4 >> 2] = HEAP32[$644 + 4 >> 2];
          HEAP32[$3 + 8 >> 2] = HEAP32[$644 + 8 >> 2];
          HEAP32[$644 >> 2] = 0;
          HEAP32[$644 + 4 >> 2] = 0;
          HEAP32[$644 + 8 >> 2] = 0;
          $647 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0;
          HEAP32[$2 >> 2] = HEAP32[$647 >> 2];
          HEAP32[$2 + 4 >> 2] = HEAP32[$647 + 4 >> 2];
          HEAP32[$2 + 8 >> 2] = HEAP32[$647 + 8 >> 2];
          HEAP32[$647 >> 2] = 0;
          HEAP32[$647 + 4 >> 2] = 0;
          HEAP32[$647 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($625, $1);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$06$i345 = $609;
         }
        }
       }
      } else $$06$i345 = $first; else $$06$i345 = $first; else $$06$i345 = $first;
      $$0 = $$06$i345;
      break L1;
      break;
     }
    case 101:
     {
      $650 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($24, 12759, 1);
      $651 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($650, $last, $24, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24);
      $$0 = ($651 | 0) == ($650 | 0) ? $first : $651;
      break L1;
      break;
     }
    case 108:
     {
      $653 = $t$0 + 2 | 0;
      $654 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($653, $last, $db) | 0;
      if (($654 | 0) == ($653 | 0)) {
       $$0 = $first;
       break L1;
      }
      $657 = $db + 4 | 0;
      $658 = HEAP32[$657 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($658 | 0)) {
       $$0 = $first;
       break L1;
      }
      $660 = $658 + -24 | 0;
      if ($parsed_gs$0$off0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($27, 12902, 2); else {
       HEAP32[$27 >> 2] = 0;
       HEAP32[$27 + 4 >> 2] = 0;
       HEAP32[$27 + 8 >> 2] = 0;
      }
      $663 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($27, 13948) | 0;
      HEAP32[$26 >> 2] = HEAP32[$663 >> 2];
      HEAP32[$26 + 4 >> 2] = HEAP32[$663 + 4 >> 2];
      HEAP32[$26 + 8 >> 2] = HEAP32[$663 + 8 >> 2];
      HEAP32[$663 >> 2] = 0;
      HEAP32[$663 + 4 >> 2] = 0;
      HEAP32[$663 + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($28, (HEAP32[$657 >> 2] | 0) + -24 | 0);
      $668 = HEAP8[$28 >> 0] | 0;
      $670 = ($668 & 1) == 0;
      $680 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $670 ? $28 + 1 | 0 : HEAP32[$28 + 8 >> 2] | 0, $670 ? ($668 & 255) >>> 1 : HEAP32[$28 + 4 >> 2] | 0) | 0;
      HEAP32[$25 >> 2] = HEAP32[$680 >> 2];
      HEAP32[$25 + 4 >> 2] = HEAP32[$680 + 4 >> 2];
      HEAP32[$25 + 8 >> 2] = HEAP32[$680 + 8 >> 2];
      HEAP32[$680 >> 2] = 0;
      HEAP32[$680 + 4 >> 2] = 0;
      HEAP32[$680 + 8 >> 2] = 0;
      do if (!(HEAP8[$660 >> 0] & 1)) {
       HEAP8[$660 + 1 >> 0] = 0;
       HEAP8[$660 >> 0] = 0;
      } else {
       $687 = $658 + -16 | 0;
       HEAP8[HEAP32[$687 >> 2] >> 0] = 0;
       $689 = $658 + -20 | 0;
       HEAP32[$689 >> 2] = 0;
       $$pre$i$i$i87 = HEAP8[$660 >> 0] | 0;
       if (!($$pre$i$i$i87 & 1)) {
        $696 = $$pre$i$i$i87;
        $705 = 10;
       } else {
        $692 = HEAP32[$660 >> 2] | 0;
        $696 = $692 & 255;
        $705 = ($692 & -2) + -1 | 0;
       }
       if (!($696 & 1)) {
        $699 = ($696 & 255) >>> 1;
        if (($696 & 255) < 22) {
         $1750 = 1;
         $704 = 10;
         $724 = $699;
        } else {
         $1750 = 1;
         $704 = ($699 + 16 & 240) + -1 | 0;
         $724 = $699;
        }
       } else {
        $1750 = 0;
        $704 = 10;
        $724 = 0;
       }
       if (($704 | 0) != ($705 | 0)) {
        if (($704 | 0) == 10) {
         $711 = $660 + 1 | 0;
         $712 = HEAP32[$687 >> 2] | 0;
         if ($1750) {
          _memcpy($711 | 0, $712 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0;
          _free($712);
         } else {
          HEAP8[$711 >> 0] = HEAP8[$712 >> 0] | 0;
          _free($712);
         }
         HEAP8[$660 >> 0] = $724 << 1;
         break;
        }
        $708 = $704 + 1 | 0;
        $709 = _malloc($708) | 0;
        if (!($704 >>> 0 <= $705 >>> 0 & ($709 | 0) == 0)) {
         if ($1750) _memcpy($709 | 0, $660 + 1 | 0, (($696 & 255) >>> 1) + 1 | 0) | 0; else {
          $721 = HEAP32[$687 >> 2] | 0;
          HEAP8[$709 >> 0] = HEAP8[$721 >> 0] | 0;
          _free($721);
         }
         HEAP32[$660 >> 2] = $708 | 1;
         HEAP32[$689 >> 2] = $724;
         HEAP32[$687 >> 2] = $709;
        }
       }
      } while (0);
      HEAP32[$660 >> 2] = HEAP32[$25 >> 2];
      HEAP32[$660 + 4 >> 2] = HEAP32[$25 + 4 >> 2];
      HEAP32[$660 + 8 >> 2] = HEAP32[$25 + 8 >> 2];
      HEAP32[$25 >> 2] = 0;
      HEAP32[$25 + 4 >> 2] = 0;
      HEAP32[$25 + 8 >> 2] = 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($25);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($28);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($26);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($27);
      $$0 = $654;
      break L1;
      break;
     }
    case 110:
     {
      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
      break L1;
      break;
     }
    case 115:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 115) {
       $736 = $first + 2 | 0;
       $737 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($736, $last, $db) | 0;
       if (($737 | 0) == ($736 | 0)) $$02$i317 = $first; else {
        $739 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($737, $last, $db) | 0;
        if (($739 | 0) == ($737 | 0)) $$02$i317 = $first; else {
         $741 = $db + 4 | 0;
         $742 = HEAP32[$741 >> 2] | 0;
         if ((($742 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i317 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $742 + -24 | 0);
          $750 = HEAP32[$741 >> 2] | 0;
          $751 = $750 + -24 | 0;
          $753 = $750;
          do {
           $752 = $753 + -24 | 0;
           HEAP32[$741 >> 2] = $752;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($752);
           $753 = HEAP32[$741 >> 2] | 0;
          } while (($753 | 0) != ($751 | 0));
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 13956, $0);
          $756 = HEAP8[$1 >> 0] | 0;
          $758 = ($756 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($750 + -48 | 0, $758 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $758 ? ($756 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$02$i317 = $739;
         }
        }
       }
      } else $$02$i317 = $first; else $$02$i317 = $first; else $$02$i317 = $first;
      $$0 = $$02$i317;
      break L1;
      break;
     }
    case 116:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 100) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {
       $774 = $first + 2 | 0;
       $775 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($774, $last, $db) | 0;
       if (($775 | 0) == ($774 | 0)) $$02$i310 = $first; else {
        $777 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($775, $last, $db) | 0;
        if (($777 | 0) == ($775 | 0)) $$02$i310 = $first; else {
         $779 = $db + 4 | 0;
         $780 = HEAP32[$779 >> 2] | 0;
         if ((($780 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$02$i310 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $780 + -24 | 0);
          $788 = HEAP32[$779 >> 2] | 0;
          $789 = $788 + -24 | 0;
          $791 = $788;
          do {
           $790 = $791 + -24 | 0;
           HEAP32[$779 >> 2] = $790;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($790);
           $791 = HEAP32[$779 >> 2] | 0;
          } while (($791 | 0) != ($789 | 0));
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($1, 18335, $0);
          $794 = HEAP8[$1 >> 0] | 0;
          $796 = ($794 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($788 + -48 | 0, $796 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $796 ? ($794 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$02$i310 = $777;
         }
        }
       }
      } else $$02$i310 = $first; else $$02$i310 = $first; else $$02$i310 = $first;
      $$0 = $$02$i310;
      break L1;
      break;
     }
    case 118:
     {
      $806 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($29, 13959, 1);
      $807 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($806, $last, $29, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($29);
      $$0 = ($807 | 0) == ($806 | 0) ? $first : $807;
      break L1;
      break;
     }
    case 86:
     {
      $809 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($30, 13961, 2);
      $810 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($809, $last, $30, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($30);
      $$0 = ($810 | 0) == ($809 | 0) ? $first : $810;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 101:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 111:
     {
      $815 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($31, 13964, 1);
      $816 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($815, $last, $31, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($31);
      $$0 = ($816 | 0) == ($815 | 0) ? $first : $816;
      break L1;
      break;
     }
    case 79:
     {
      $818 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($32, 13966, 2);
      $819 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($818, $last, $32, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($32);
      $$0 = ($819 | 0) == ($818 | 0) ? $first : $819;
      break L1;
      break;
     }
    case 113:
     {
      $821 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($33, 13969, 2);
      $822 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($821, $last, $33, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($33);
      $$0 = ($822 | 0) == ($821 | 0) ? $first : $822;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 103:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 101:
     {
      $827 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($34, 13972, 2);
      $828 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($827, $last, $34, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($34);
      $$0 = ($828 | 0) == ($827 | 0) ? $first : $828;
      break L1;
      break;
     }
    case 116:
     {
      $830 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($35, 12778, 1);
      $831 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($830, $last, $35, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($35);
      $$0 = ($831 | 0) == ($830 | 0) ? $first : $831;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 105:
   {
    if ((HEAP8[$t$0 + 1 >> 0] | 0) != 120) {
     $$0 = $first;
     break L1;
    }
    $836 = $first + 2 | 0;
    $837 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($836, $last, $db) | 0;
    if (($837 | 0) == ($836 | 0)) {
     $$0 = $first;
     break L1;
    }
    $839 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($837, $last, $db) | 0;
    $841 = $db + 4 | 0;
    $842 = HEAP32[$841 >> 2] | 0;
    if (($839 | 0) == ($837 | 0)) {
     $879 = $842 + -24 | 0;
     $881 = $842;
     while (1) {
      $880 = $881 + -24 | 0;
      HEAP32[$841 >> 2] = $880;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($880);
      $881 = HEAP32[$841 >> 2] | 0;
      if (($881 | 0) == ($879 | 0)) {
       $$0 = $first;
       break L1;
      }
     }
    }
    if ((($842 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     $$0 = $first;
     break L1;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $842 + -24 | 0);
    $850 = HEAP32[$841 >> 2] | 0;
    $851 = $850 + -24 | 0;
    $853 = $850;
    do {
     $852 = $853 + -24 | 0;
     HEAP32[$841 >> 2] = $852;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($852);
     $853 = HEAP32[$841 >> 2] | 0;
    } while (($853 | 0) != ($851 | 0));
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $850 + -48 | 0);
    $857 = (HEAP32[$841 >> 2] | 0) + -24 | 0;
    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($40, 12714, $op1);
    $858 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($40, 13975) | 0;
    HEAP32[$39 >> 2] = HEAP32[$858 >> 2];
    HEAP32[$39 + 4 >> 2] = HEAP32[$858 + 4 >> 2];
    HEAP32[$39 + 8 >> 2] = HEAP32[$858 + 8 >> 2];
    HEAP32[$858 >> 2] = 0;
    HEAP32[$858 + 4 >> 2] = 0;
    HEAP32[$858 + 8 >> 2] = 0;
    $861 = HEAP8[$op2 >> 0] | 0;
    $863 = ($861 & 1) == 0;
    $873 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($39, $863 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $863 ? ($861 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0;
    HEAP32[$38 >> 2] = HEAP32[$873 >> 2];
    HEAP32[$38 + 4 >> 2] = HEAP32[$873 + 4 >> 2];
    HEAP32[$38 + 8 >> 2] = HEAP32[$873 + 8 >> 2];
    HEAP32[$873 >> 2] = 0;
    HEAP32[$873 + 4 >> 2] = 0;
    HEAP32[$873 + 8 >> 2] = 0;
    $876 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($38, 12703) | 0;
    HEAP32[$37 >> 2] = HEAP32[$876 >> 2];
    HEAP32[$37 + 4 >> 2] = HEAP32[$876 + 4 >> 2];
    HEAP32[$37 + 8 >> 2] = HEAP32[$876 + 8 >> 2];
    HEAP32[$876 >> 2] = 0;
    HEAP32[$876 + 4 >> 2] = 0;
    HEAP32[$876 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($36, $37);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($857, $36);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($37);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($38);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($39);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($40);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2);
    $$0 = $839;
    break L1;
    break;
   }
  case 108:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 101:
     {
      $886 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($41, 13978, 2);
      $887 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($886, $last, $41, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($41);
      $$0 = ($887 | 0) == ($886 | 0) ? $first : $887;
      break L1;
      break;
     }
    case 115:
     {
      $889 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($42, 13981, 2);
      $890 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($889, $last, $42, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($42);
      $$0 = ($890 | 0) == ($889 | 0) ? $first : $890;
      break L1;
      break;
     }
    case 83:
     {
      $892 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($43, 13984, 3);
      $893 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($892, $last, $43, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($43);
      $$0 = ($893 | 0) == ($892 | 0) ? $first : $893;
      break L1;
      break;
     }
    case 116:
     {
      $895 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($44, 12776, 1);
      $896 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($895, $last, $44, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($44);
      $$0 = ($896 | 0) == ($895 | 0) ? $first : $896;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 109:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 105:
     {
      $901 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($45, 13988, 1);
      $902 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($901, $last, $45, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($45);
      $$0 = ($902 | 0) == ($901 | 0) ? $first : $902;
      break L1;
      break;
     }
    case 73:
     {
      $904 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($46, 13990, 2);
      $905 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($904, $last, $46, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($46);
      $$0 = ($905 | 0) == ($904 | 0) ? $first : $905;
      break L1;
      break;
     }
    case 108:
     {
      $907 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($47, 12759, 1);
      $908 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($907, $last, $47, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($47);
      $$0 = ($908 | 0) == ($907 | 0) ? $first : $908;
      break L1;
      break;
     }
    case 76:
     {
      $910 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($48, 13993, 2);
      $911 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($910, $last, $48, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($48);
      $$0 = ($911 | 0) == ($910 | 0) ? $first : $911;
      break L1;
      break;
     }
    case 109:
     {
      $913 = $first + 2 | 0;
      if (($913 | 0) != ($last | 0)) if ((HEAP8[$913 >> 0] | 0) == 95) {
       $917 = $first + 3 | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($49, 13996, 2);
       $918 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($917, $last, $49, $db) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($49);
       $$0 = ($918 | 0) == ($917 | 0) ? $first : $918;
       break L1;
      }
      $920 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($913, $last, $db) | 0;
      if (($920 | 0) == ($913 | 0)) {
       $$0 = $first;
       break L1;
      }
      $924 = HEAP32[$db + 4 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($924 | 0)) {
       $$0 = $first;
       break L1;
      }
      $926 = $924 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($53, $926);
      $927 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($53, 0, 12714) | 0;
      HEAP32[$52 >> 2] = HEAP32[$927 >> 2];
      HEAP32[$52 + 4 >> 2] = HEAP32[$927 + 4 >> 2];
      HEAP32[$52 + 8 >> 2] = HEAP32[$927 + 8 >> 2];
      HEAP32[$927 >> 2] = 0;
      HEAP32[$927 + 4 >> 2] = 0;
      HEAP32[$927 + 8 >> 2] = 0;
      $930 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($52, 13999) | 0;
      HEAP32[$51 >> 2] = HEAP32[$930 >> 2];
      HEAP32[$51 + 4 >> 2] = HEAP32[$930 + 4 >> 2];
      HEAP32[$51 + 8 >> 2] = HEAP32[$930 + 8 >> 2];
      HEAP32[$930 >> 2] = 0;
      HEAP32[$930 + 4 >> 2] = 0;
      HEAP32[$930 + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($50, $51);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($926, $50);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($50);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($51);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($52);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($53);
      $$0 = $920;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 110:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 119:
    case 97:
     {
      L323 : do if ($85) {
       $936 = HEAP8[$first >> 0] | 0;
       if ($936 << 24 >> 24 == 103) {
        $940 = (HEAP8[$first + 1 >> 0] | 0) == 115;
        $$first$i = $940 ? $first + 2 | 0 : $first;
        $943 = HEAP8[$$first$i >> 0] | 0;
        $parsed_gs$0$off0$i = $940;
        $t$0$i267 = $$first$i;
       } else {
        $943 = $936;
        $parsed_gs$0$off0$i = 0;
        $t$0$i267 = $first;
       }
       if ($943 << 24 >> 24 == 110) {
        $945 = HEAP8[$t$0$i267 + 1 >> 0] | 0;
        switch ($945 << 24 >> 24) {
        case 97:
        case 119:
         break;
        default:
         {
          $$221$i = $first;
          label = 319;
          break L323;
         }
        }
        $946 = $945 << 24 >> 24 == 97;
        $947 = $t$0$i267 + 2 | 0;
        if (($947 | 0) == ($last | 0)) $$9$i = $first; else {
         $has_expr_list$0$off0$i = 0;
         $t$1$i = $947;
         while (1) {
          if ((HEAP8[$t$1$i >> 0] | 0) == 95) {
           $has_expr_list$0$off0$i$lcssa = $has_expr_list$0$off0$i;
           $t$1$i$lcssa = $t$1$i;
           break;
          }
          $t$1$i$looptemp = $t$1$i;
          $t$1$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$1$i, $last, $db) | 0;
          if (($t$1$i | 0) == ($t$1$i$looptemp | 0) | ($t$1$i | 0) == ($last | 0)) {
           $$9$i = $first;
           break L323;
          } else $has_expr_list$0$off0$i = 1;
         }
         $954 = $t$1$i$lcssa + 1 | 0;
         $955 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($954, $last, $db) | 0;
         if (($955 | 0) == ($954 | 0) | ($955 | 0) == ($last | 0)) $$9$i = $first; else {
          $961 = HEAP8[$955 >> 0] | 0;
          L335 : do if (($81 - $955 | 0) > 2 & $961 << 24 >> 24 == 112) {
           if ((HEAP8[$955 + 1 >> 0] | 0) != 105) {
            $$9$i = $first;
            break L323;
           }
           $t$2$i = $955 + 2 | 0;
           while (1) {
            if ((HEAP8[$t$2$i >> 0] | 0) == 69) {
             $has_init$0$off0$i513 = 1;
             $t$3$i512 = $t$2$i;
             break L335;
            }
            $t$2$i$looptemp = $t$2$i;
            $t$2$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($t$2$i, $last, $db) | 0;
            if (($t$2$i | 0) == ($t$2$i$looptemp | 0) | ($t$2$i | 0) == ($last | 0)) {
             $$9$i = $first;
             break L323;
            }
           }
          } else if ($961 << 24 >> 24 == 69) {
           $has_init$0$off0$i513 = 0;
           $t$3$i512 = $955;
          } else {
           $$9$i = $first;
           break L323;
          } while (0);
          HEAP32[$1 >> 2] = 0;
          HEAP32[$1 + 4 >> 2] = 0;
          HEAP32[$1 + 8 >> 2] = 0;
          if ($has_init$0$off0$i513) {
           $976 = $db + 4 | 0;
           $977 = HEAP32[$976 >> 2] | 0;
           if ((HEAP32[$db >> 2] | 0) != ($977 | 0)) {
            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $977 + -24 | 0);
            L346 : do if (!(HEAP8[$1 >> 0] & 1)) {
             HEAP8[$1 + 1 >> 0] = 0;
             HEAP8[$1 >> 0] = 0;
            } else {
             $984 = $1 + 8 | 0;
             $985 = HEAP32[$984 >> 2] | 0;
             HEAP8[$985 >> 0] = 0;
             $986 = $1 + 4 | 0;
             HEAP32[$986 >> 2] = 0;
             $987 = HEAP32[$1 >> 2] | 0;
             $phitmp$i$i$i$i$i$i$i273 = ($987 & -2) + -1 | 0;
             $989 = $987 & 255;
             do if (!($989 & 1)) {
              $993 = $987 >>> 1 & 127;
              if (($989 & 255) < 22) {
               _memcpy($1 + 1 | 0, $985 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0;
               _free($985);
               $$ph518 = $993;
               break;
              }
              $996 = $993 + 16 & 240;
              $phitmp$i2$i$i$i$i$i$i276 = $996 + -1 | 0;
              if (($phitmp$i2$i$i$i$i$i$i276 | 0) == ($phitmp$i$i$i$i$i$i$i273 | 0)) break L346;
              $999 = _malloc($996) | 0;
              if ($phitmp$i2$i$i$i$i$i$i276 >>> 0 <= $phitmp$i$i$i$i$i$i$i273 >>> 0 & ($999 | 0) == 0) break L346;
              _memcpy($999 | 0, $1 + 1 | 0, ($987 >>> 1 & 127) + 1 | 0) | 0;
              HEAP32[$1 >> 2] = $996 | 1;
              HEAP32[$986 >> 2] = $993;
              HEAP32[$984 >> 2] = $999;
              break L346;
             } else {
              HEAP8[$1 + 1 >> 0] = 0;
              _free($985);
              $$ph518 = 0;
             } while (0);
             HEAP8[$1 >> 0] = $$ph518 << 1;
            } while (0);
            HEAP32[$1 >> 2] = HEAP32[$2 >> 2];
            HEAP32[$1 + 4 >> 2] = HEAP32[$2 + 4 >> 2];
            HEAP32[$1 + 8 >> 2] = HEAP32[$2 + 8 >> 2];
            HEAP32[$2 >> 2] = 0;
            HEAP32[$2 + 4 >> 2] = 0;
            HEAP32[$2 + 8 >> 2] = 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
            $1015 = HEAP32[$976 >> 2] | 0;
            $1016 = $1015 + -24 | 0;
            $1018 = $1015;
            do {
             $1017 = $1018 + -24 | 0;
             HEAP32[$976 >> 2] = $1017;
             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1017);
             $1018 = HEAP32[$976 >> 2] | 0;
            } while (($1018 | 0) != ($1016 | 0));
            $$pre$phi511Z2D = $976;
            $$pre$phiZ2D = $db;
            $1022 = $1016;
            label = 283;
           }
          } else {
           $$phi$trans$insert = $db + 4 | 0;
           $$pre$phi511Z2D = $$phi$trans$insert;
           $$pre$phiZ2D = $db;
           $1022 = HEAP32[$$phi$trans$insert >> 2] | 0;
           label = 283;
          }
          if ((label | 0) == 283) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) != ($1022 | 0)) {
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1022 + -24 | 0);
           $1024 = HEAP32[$$pre$phi511Z2D >> 2] | 0;
           $1025 = $1024 + -24 | 0;
           $1027 = $1024;
           do {
            $1026 = $1027 + -24 | 0;
            HEAP32[$$pre$phi511Z2D >> 2] = $1026;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1026);
            $1027 = HEAP32[$$pre$phi511Z2D >> 2] | 0;
           } while (($1027 | 0) != ($1025 | 0));
           HEAP32[$4 >> 2] = 0;
           HEAP32[$4 + 4 >> 2] = 0;
           HEAP32[$4 + 8 >> 2] = 0;
           if ($has_expr_list$0$off0$i$lcssa) if ((HEAP32[$$pre$phiZ2D >> 2] | 0) == ($1025 | 0)) {
            $$019$i = $first;
            $$2$i302 = 0;
           } else {
            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($5, $1024 + -48 | 0);
            L371 : do if (!(HEAP8[$4 >> 0] & 1)) {
             HEAP8[$4 + 1 >> 0] = 0;
             HEAP8[$4 >> 0] = 0;
            } else {
             $1038 = $4 + 8 | 0;
             $1039 = HEAP32[$1038 >> 2] | 0;
             HEAP8[$1039 >> 0] = 0;
             $1040 = $4 + 4 | 0;
             HEAP32[$1040 >> 2] = 0;
             $1041 = HEAP32[$4 >> 2] | 0;
             $phitmp$i$i$i$i$i$i32$i = ($1041 & -2) + -1 | 0;
             $1043 = $1041 & 255;
             do if (!($1043 & 1)) {
              $1047 = $1041 >>> 1 & 127;
              if (($1043 & 255) < 22) {
               _memcpy($4 + 1 | 0, $1039 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0;
               _free($1039);
               $$ph520524 = $1047;
               break;
              }
              $1050 = $1047 + 16 & 240;
              $phitmp$i2$i$i$i$i$i35$i = $1050 + -1 | 0;
              if (($phitmp$i2$i$i$i$i$i35$i | 0) == ($phitmp$i$i$i$i$i$i32$i | 0)) break L371;
              $1053 = _malloc($1050) | 0;
              if ($phitmp$i2$i$i$i$i$i35$i >>> 0 <= $phitmp$i$i$i$i$i$i32$i >>> 0 & ($1053 | 0) == 0) break L371;
              _memcpy($1053 | 0, $4 + 1 | 0, ($1041 >>> 1 & 127) + 1 | 0) | 0;
              HEAP32[$4 >> 2] = $1050 | 1;
              HEAP32[$1040 >> 2] = $1047;
              HEAP32[$1038 >> 2] = $1053;
              break L371;
             } else {
              HEAP8[$4 + 1 >> 0] = 0;
              _free($1039);
              $$ph520524 = 0;
             } while (0);
             HEAP8[$4 >> 0] = $$ph520524 << 1;
            } while (0);
            HEAP32[$4 >> 2] = HEAP32[$5 >> 2];
            HEAP32[$4 + 4 >> 2] = HEAP32[$5 + 4 >> 2];
            HEAP32[$4 + 8 >> 2] = HEAP32[$5 + 8 >> 2];
            HEAP32[$5 >> 2] = 0;
            HEAP32[$5 + 4 >> 2] = 0;
            HEAP32[$5 + 8 >> 2] = 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
            $1069 = HEAP32[$$pre$phi511Z2D >> 2] | 0;
            $1070 = $1069 + -24 | 0;
            $1072 = $1069;
            do {
             $1071 = $1072 + -24 | 0;
             HEAP32[$$pre$phi511Z2D >> 2] = $1071;
             __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1071);
             $1072 = HEAP32[$$pre$phi511Z2D >> 2] | 0;
            } while (($1072 | 0) != ($1070 | 0));
            label = 300;
           } else label = 300;
           if ((label | 0) == 300) {
            HEAP32[$6 >> 2] = 0;
            HEAP32[$6 + 4 >> 2] = 0;
            HEAP32[$6 + 8 >> 2] = 0;
            if ($parsed_gs$0$off0$i) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($6, 12902, 2);
            if ($946) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 14003) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($6, 12726) | 0;
            if ($has_expr_list$0$off0$i$lcssa) {
             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($8, 12714, $4);
             $1076 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($8, 14007) | 0;
             HEAP32[$7 >> 2] = HEAP32[$1076 >> 2];
             HEAP32[$7 + 4 >> 2] = HEAP32[$1076 + 4 >> 2];
             HEAP32[$7 + 8 >> 2] = HEAP32[$1076 + 8 >> 2];
             HEAP32[$1076 >> 2] = 0;
             HEAP32[$1076 + 4 >> 2] = 0;
             HEAP32[$1076 + 8 >> 2] = 0;
             $1079 = HEAP8[$7 >> 0] | 0;
             $1081 = ($1079 & 1) == 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1081 ? $7 + 1 | 0 : HEAP32[$7 + 8 >> 2] | 0, $1081 ? ($1079 & 255) >>> 1 : HEAP32[$7 + 4 >> 2] | 0) | 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);
            }
            $1091 = HEAP8[$3 >> 0] | 0;
            $1093 = ($1091 & 1) == 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1093 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $1093 ? ($1091 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;
            if ($has_init$0$off0$i513) {
             __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($10, 12616, $1);
             $1103 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($10, 12619) | 0;
             HEAP32[$9 >> 2] = HEAP32[$1103 >> 2];
             HEAP32[$9 + 4 >> 2] = HEAP32[$1103 + 4 >> 2];
             HEAP32[$9 + 8 >> 2] = HEAP32[$1103 + 8 >> 2];
             HEAP32[$1103 >> 2] = 0;
             HEAP32[$1103 + 4 >> 2] = 0;
             HEAP32[$1103 + 8 >> 2] = 0;
             $1106 = HEAP8[$9 >> 0] | 0;
             $1108 = ($1106 & 1) == 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($6, $1108 ? $9 + 1 | 0 : HEAP32[$9 + 8 >> 2] | 0, $1108 ? ($1106 & 255) >>> 1 : HEAP32[$9 + 4 >> 2] | 0) | 0;
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);
             __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10);
            };
            HEAP32[$12 >> 2] = HEAP32[$6 >> 2];
            HEAP32[$12 + 4 >> 2] = HEAP32[$6 + 4 >> 2];
            HEAP32[$12 + 8 >> 2] = HEAP32[$6 + 8 >> 2];
            HEAP32[$6 >> 2] = 0;
            HEAP32[$6 + 4 >> 2] = 0;
            HEAP32[$6 + 8 >> 2] = 0;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($11, $12);
            $1120 = HEAP32[$$pre$phi511Z2D >> 2] | 0;
            $1122 = HEAP32[$db + 8 >> 2] | 0;
            if ($1120 >>> 0 < $1122 >>> 0) {
             __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1120, $11);
             HEAP32[$$pre$phi511Z2D >> 2] = (HEAP32[$$pre$phi511Z2D >> 2] | 0) + 24;
            } else {
             $1129 = HEAP32[$$pre$phiZ2D >> 2] | 0;
             $1130 = $1120 - $1129 | 0;
             $1131 = ($1130 | 0) / 24 | 0;
             $1132 = $1131 + 1 | 0;
             if (($1130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
             $1136 = ($1122 - $1129 | 0) / 24 | 0;
             if ($1136 >>> 0 < 1073741823) {
              $1138 = $1136 << 1;
              $$0$i$i$i$i299 = $1138 >>> 0 < $1132 >>> 0 ? $1132 : $1138;
             } else $$0$i$i$i$i299 = 2147483647;
             __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i299, $1131, $db + 12 | 0);
             $1141 = $0 + 8 | 0;
             $1142 = HEAP32[$1141 >> 2] | 0;
             __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1142, $11);
             HEAP32[$1141 >> 2] = $1142 + 24;
             __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
             __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
            }
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
            $$019$i = $t$3$i512 + 1 | 0;
            $$2$i302 = 1;
           }
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
           if ($$2$i302) {
            $$221$i = $$019$i;
            label = 319;
            break;
           } else {
            $$9$i = $first;
            break;
           }
          }
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
          $$9$i = $first;
         }
        }
       } else {
        $$221$i = $first;
        label = 319;
       }
      } else {
       $$221$i = $first;
       label = 319;
      } while (0);
      if ((label | 0) == 319) $$9$i = $$221$i;
      $$0 = $$9$i;
      break L1;
      break;
     }
    case 101:
     {
      $1145 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($54, 14010, 2);
      $1146 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1145, $last, $54, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($54);
      $$0 = ($1146 | 0) == ($1145 | 0) ? $first : $1146;
      break L1;
      break;
     }
    case 103:
     {
      $1148 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($55, 13988, 1);
      $1149 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1148, $last, $55, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($55);
      $$0 = ($1149 | 0) == ($1148 | 0) ? $first : $1149;
      break L1;
      break;
     }
    case 116:
     {
      $1151 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($56, 14013, 1);
      $1152 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1151, $last, $56, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($56);
      $$0 = ($1152 | 0) == ($1151 | 0) ? $first : $1152;
      break L1;
      break;
     }
    case 120:
     {
      $1154 = $first + 2 | 0;
      $1155 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1154, $last, $db) | 0;
      if (($1155 | 0) == ($1154 | 0)) $$03$i265 = $1154; else {
       $1159 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($1159 | 0)) $$03$i265 = $1154; else {
        $1161 = $1159 + -24 | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1161);
        $1162 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14015) | 0;
        HEAP32[$1 >> 2] = HEAP32[$1162 >> 2];
        HEAP32[$1 + 4 >> 2] = HEAP32[$1162 + 4 >> 2];
        HEAP32[$1 + 8 >> 2] = HEAP32[$1162 + 8 >> 2];
        HEAP32[$1162 >> 2] = 0;
        HEAP32[$1162 + 4 >> 2] = 0;
        HEAP32[$1162 + 8 >> 2] = 0;
        $1165 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
        HEAP32[$0 >> 2] = HEAP32[$1165 >> 2];
        HEAP32[$0 + 4 >> 2] = HEAP32[$1165 + 4 >> 2];
        HEAP32[$0 + 8 >> 2] = HEAP32[$1165 + 8 >> 2];
        HEAP32[$1165 >> 2] = 0;
        HEAP32[$1165 + 4 >> 2] = 0;
        HEAP32[$1165 + 8 >> 2] = 0;
        do if (!(HEAP8[$1161 >> 0] & 1)) {
         HEAP8[$1161 + 1 >> 0] = 0;
         HEAP8[$1161 >> 0] = 0;
        } else {
         $1172 = $1159 + -16 | 0;
         HEAP8[HEAP32[$1172 >> 2] >> 0] = 0;
         $1174 = $1159 + -20 | 0;
         HEAP32[$1174 >> 2] = 0;
         $$pre$i$i$i$i = HEAP8[$1161 >> 0] | 0;
         if (!($$pre$i$i$i$i & 1)) {
          $1181 = $$pre$i$i$i$i;
          $1190 = 10;
         } else {
          $1177 = HEAP32[$1161 >> 2] | 0;
          $1181 = $1177 & 255;
          $1190 = ($1177 & -2) + -1 | 0;
         }
         if (!($1181 & 1)) {
          $1184 = ($1181 & 255) >>> 1;
          if (($1181 & 255) < 22) {
           $1189 = 10;
           $1209 = $1184;
           $1751 = 1;
          } else {
           $1189 = ($1184 + 16 & 240) + -1 | 0;
           $1209 = $1184;
           $1751 = 1;
          }
         } else {
          $1189 = 10;
          $1209 = 0;
          $1751 = 0;
         }
         if (($1189 | 0) != ($1190 | 0)) {
          if (($1189 | 0) == 10) {
           $1196 = $1161 + 1 | 0;
           $1197 = HEAP32[$1172 >> 2] | 0;
           if ($1751) {
            _memcpy($1196 | 0, $1197 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0;
            _free($1197);
           } else {
            HEAP8[$1196 >> 0] = HEAP8[$1197 >> 0] | 0;
            _free($1197);
           }
           HEAP8[$1161 >> 0] = $1209 << 1;
           break;
          }
          $1193 = $1189 + 1 | 0;
          $1194 = _malloc($1193) | 0;
          if (!($1189 >>> 0 <= $1190 >>> 0 & ($1194 | 0) == 0)) {
           if ($1751) _memcpy($1194 | 0, $1161 + 1 | 0, (($1181 & 255) >>> 1) + 1 | 0) | 0; else {
            $1206 = HEAP32[$1172 >> 2] | 0;
            HEAP8[$1194 >> 0] = HEAP8[$1206 >> 0] | 0;
            _free($1206);
           }
           HEAP32[$1161 >> 2] = $1193 | 1;
           HEAP32[$1174 >> 2] = $1209;
           HEAP32[$1172 >> 2] = $1194;
          }
         }
        } while (0);
        HEAP32[$1161 >> 2] = HEAP32[$0 >> 2];
        HEAP32[$1161 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
        HEAP32[$1161 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
        HEAP32[$0 >> 2] = 0;
        HEAP32[$0 + 4 >> 2] = 0;
        HEAP32[$0 + 8 >> 2] = 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
        $$03$i265 = $1155;
       }
      }
      $$0 = ($$03$i265 | 0) == ($1154 | 0) ? $first : $$03$i265;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 111:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 110:
     {
      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
      break L1;
      break;
     }
    case 111:
     {
      $1219 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($57, 14026, 2);
      $1220 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1219, $last, $57, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($57);
      $$0 = ($1220 | 0) == ($1219 | 0) ? $first : $1220;
      break L1;
      break;
     }
    case 114:
     {
      $1222 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($58, 14029, 1);
      $1223 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1222, $last, $58, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($58);
      $$0 = ($1223 | 0) == ($1222 | 0) ? $first : $1223;
      break L1;
      break;
     }
    case 82:
     {
      $1225 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($59, 14031, 2);
      $1226 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1225, $last, $59, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($59);
      $$0 = ($1226 | 0) == ($1225 | 0) ? $first : $1226;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 112:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 109:
     {
      $1231 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($60, 14034, 3);
      $1232 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1231, $last, $60, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($60);
      $$0 = ($1232 | 0) == ($1231 | 0) ? $first : $1232;
      break L1;
      break;
     }
    case 108:
     {
      $1234 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($61, 14038, 1);
      $1235 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1234, $last, $61, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($61);
      $$0 = ($1235 | 0) == ($1234 | 0) ? $first : $1235;
      break L1;
      break;
     }
    case 76:
     {
      $1237 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($62, 14040, 2);
      $1238 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1237, $last, $62, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($62);
      $$0 = ($1238 | 0) == ($1237 | 0) ? $first : $1238;
      break L1;
      break;
     }
    case 112:
     {
      $1240 = $first + 2 | 0;
      if (($1240 | 0) != ($last | 0)) if ((HEAP8[$1240 >> 0] | 0) == 95) {
       $1244 = $first + 3 | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($63, 14043, 2);
       $1245 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1244, $last, $63, $db) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($63);
       $$0 = ($1245 | 0) == ($1244 | 0) ? $first : $1245;
       break L1;
      }
      $1247 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1240, $last, $db) | 0;
      if (($1247 | 0) == ($1240 | 0)) {
       $$0 = $first;
       break L1;
      }
      $1251 = HEAP32[$db + 4 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($1251 | 0)) {
       $$0 = $first;
       break L1;
      }
      $1253 = $1251 + -24 | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($67, $1253);
      $1254 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($67, 0, 12714) | 0;
      HEAP32[$66 >> 2] = HEAP32[$1254 >> 2];
      HEAP32[$66 + 4 >> 2] = HEAP32[$1254 + 4 >> 2];
      HEAP32[$66 + 8 >> 2] = HEAP32[$1254 + 8 >> 2];
      HEAP32[$1254 >> 2] = 0;
      HEAP32[$1254 + 4 >> 2] = 0;
      HEAP32[$1254 + 8 >> 2] = 0;
      $1257 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($66, 14046) | 0;
      HEAP32[$65 >> 2] = HEAP32[$1257 >> 2];
      HEAP32[$65 + 4 >> 2] = HEAP32[$1257 + 4 >> 2];
      HEAP32[$65 + 8 >> 2] = HEAP32[$1257 + 8 >> 2];
      HEAP32[$1257 >> 2] = 0;
      HEAP32[$1257 + 4 >> 2] = 0;
      HEAP32[$1257 + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($64, $65);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1253, $64);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($64);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($65);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($66);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($67);
      $$0 = $1247;
      break L1;
      break;
     }
    case 115:
     {
      $1260 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($68, 14038, 1);
      $1261 = __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1260, $last, $68, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($68);
      $$0 = ($1261 | 0) == ($1260 | 0) ? $first : $1261;
      break L1;
      break;
     }
    case 116:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 112) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {
       $1269 = $first + 2 | 0;
       $1270 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1269, $last, $db) | 0;
       if (($1270 | 0) == ($1269 | 0)) $$0$i254 = $first; else {
        $1272 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1270, $last, $db) | 0;
        if (($1272 | 0) == ($1270 | 0)) $$0$i254 = $first; else {
         $1274 = $db + 4 | 0;
         $1275 = HEAP32[$1274 >> 2] | 0;
         if ((($1275 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0$i254 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1275 + -24 | 0);
          $1283 = HEAP32[$1274 >> 2] | 0;
          $1284 = $1283 + -24 | 0;
          $1286 = $1283;
          do {
           $1285 = $1286 + -24 | 0;
           HEAP32[$1274 >> 2] = $1285;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1285);
           $1286 = HEAP32[$1274 >> 2] | 0;
          } while (($1286 | 0) != ($1284 | 0));
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1283 + -48 | 0, 14050) | 0;
          $1291 = HEAP8[$0 >> 0] | 0;
          $1293 = ($1291 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$1274 >> 2] | 0) + -24 | 0, $1293 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1293 ? ($1291 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$0$i254 = $1272;
         }
        }
       }
      } else $$0$i254 = $first; else $$0$i254 = $first; else $$0$i254 = $first;
      $$0 = $$0$i254;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 113:
   {
    if ((HEAP8[$t$0 + 1 >> 0] | 0) != 117) {
     $$0 = $first;
     break L1;
    }
    $1306 = $first + 2 | 0;
    $1307 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1306, $last, $db) | 0;
    if (($1307 | 0) == ($1306 | 0)) {
     $$0 = $first;
     break L1;
    }
    $1309 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1307, $last, $db) | 0;
    if (($1309 | 0) == ($1307 | 0)) {
     $1383 = $db + 4 | 0;
     $1384 = HEAP32[$1383 >> 2] | 0;
     $1385 = $1384 + -24 | 0;
     $1387 = $1384;
     while (1) {
      $1386 = $1387 + -24 | 0;
      HEAP32[$1383 >> 2] = $1386;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1386);
      $1387 = HEAP32[$1383 >> 2] | 0;
      if (($1387 | 0) == ($1385 | 0)) {
       $$0 = $first;
       break L1;
      }
     }
    }
    $1311 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1309, $last, $db) | 0;
    $1313 = $db + 4 | 0;
    $1314 = HEAP32[$1313 >> 2] | 0;
    if (($1311 | 0) == ($1309 | 0)) {
     $1375 = $1314 + -24 | 0;
     $1377 = $1314;
     do {
      $1376 = $1377 + -24 | 0;
      HEAP32[$1313 >> 2] = $1376;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1376);
      $1377 = HEAP32[$1313 >> 2] | 0;
     } while (($1377 | 0) != ($1375 | 0));
     $1379 = $1314 + -48 | 0;
     $1381 = $1375;
     while (1) {
      $1380 = $1381 + -24 | 0;
      HEAP32[$1313 >> 2] = $1380;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1380);
      $1381 = HEAP32[$1313 >> 2] | 0;
      if (($1381 | 0) == ($1379 | 0)) {
       $$0 = $first;
       break L1;
      }
     }
    }
    if ((($1314 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 3) {
     $$0 = $first;
     break L1;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op3, $1314 + -24 | 0);
    $1322 = HEAP32[$1313 >> 2] | 0;
    $1323 = $1322 + -24 | 0;
    $1325 = $1322;
    do {
     $1324 = $1325 + -24 | 0;
     HEAP32[$1313 >> 2] = $1324;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1324);
     $1325 = HEAP32[$1313 >> 2] | 0;
    } while (($1325 | 0) != ($1323 | 0));
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op27, $1322 + -48 | 0);
    $1328 = HEAP32[$1313 >> 2] | 0;
    $1329 = $1328 + -24 | 0;
    $1331 = $1328;
    do {
     $1330 = $1331 + -24 | 0;
     HEAP32[$1313 >> 2] = $1330;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1330);
     $1331 = HEAP32[$1313 >> 2] | 0;
    } while (($1331 | 0) != ($1329 | 0));
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op18, $1328 + -48 | 0);
    $1335 = (HEAP32[$1313 >> 2] | 0) + -24 | 0;
    __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($75, 12714, $op18);
    $1336 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($75, 14053) | 0;
    HEAP32[$74 >> 2] = HEAP32[$1336 >> 2];
    HEAP32[$74 + 4 >> 2] = HEAP32[$1336 + 4 >> 2];
    HEAP32[$74 + 8 >> 2] = HEAP32[$1336 + 8 >> 2];
    HEAP32[$1336 >> 2] = 0;
    HEAP32[$1336 + 4 >> 2] = 0;
    HEAP32[$1336 + 8 >> 2] = 0;
    $1339 = HEAP8[$op27 >> 0] | 0;
    $1341 = ($1339 & 1) == 0;
    $1351 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($74, $1341 ? $op27 + 1 | 0 : HEAP32[$op27 + 8 >> 2] | 0, $1341 ? ($1339 & 255) >>> 1 : HEAP32[$op27 + 4 >> 2] | 0) | 0;
    HEAP32[$73 >> 2] = HEAP32[$1351 >> 2];
    HEAP32[$73 + 4 >> 2] = HEAP32[$1351 + 4 >> 2];
    HEAP32[$73 + 8 >> 2] = HEAP32[$1351 + 8 >> 2];
    HEAP32[$1351 >> 2] = 0;
    HEAP32[$1351 + 4 >> 2] = 0;
    HEAP32[$1351 + 8 >> 2] = 0;
    $1354 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($73, 14059) | 0;
    HEAP32[$72 >> 2] = HEAP32[$1354 >> 2];
    HEAP32[$72 + 4 >> 2] = HEAP32[$1354 + 4 >> 2];
    HEAP32[$72 + 8 >> 2] = HEAP32[$1354 + 8 >> 2];
    HEAP32[$1354 >> 2] = 0;
    HEAP32[$1354 + 4 >> 2] = 0;
    HEAP32[$1354 + 8 >> 2] = 0;
    $1357 = HEAP8[$op3 >> 0] | 0;
    $1359 = ($1357 & 1) == 0;
    $1369 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($72, $1359 ? $op3 + 1 | 0 : HEAP32[$op3 + 8 >> 2] | 0, $1359 ? ($1357 & 255) >>> 1 : HEAP32[$op3 + 4 >> 2] | 0) | 0;
    HEAP32[$71 >> 2] = HEAP32[$1369 >> 2];
    HEAP32[$71 + 4 >> 2] = HEAP32[$1369 + 4 >> 2];
    HEAP32[$71 + 8 >> 2] = HEAP32[$1369 + 8 >> 2];
    HEAP32[$1369 >> 2] = 0;
    HEAP32[$1369 + 4 >> 2] = 0;
    HEAP32[$1369 + 8 >> 2] = 0;
    $1372 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($71, 12619) | 0;
    HEAP32[$70 >> 2] = HEAP32[$1372 >> 2];
    HEAP32[$70 + 4 >> 2] = HEAP32[$1372 + 4 >> 2];
    HEAP32[$70 + 8 >> 2] = HEAP32[$1372 + 8 >> 2];
    HEAP32[$1372 >> 2] = 0;
    HEAP32[$1372 + 4 >> 2] = 0;
    HEAP32[$1372 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($69, $70);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1335, $69);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($70);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($71);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($72);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($73);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($74);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($75);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op18);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op27);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op3);
    $$0 = $1311;
    break L1;
    break;
   }
  case 114:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 99:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 114) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {
       $1398 = $first + 2 | 0;
       $1399 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1398, $last, $db) | 0;
       if (($1399 | 0) == ($1398 | 0)) $$06$i248 = $first; else {
        $1401 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1399, $last, $db) | 0;
        if (($1401 | 0) == ($1399 | 0)) $$06$i248 = $first; else {
         $1403 = $db + 4 | 0;
         $1404 = HEAP32[$1403 >> 2] | 0;
         if ((($1404 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i248 = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1404 + -24 | 0);
          $1412 = HEAP32[$1403 >> 2] | 0;
          $1413 = $1412 + -24 | 0;
          $1415 = $1412;
          do {
           $1414 = $1415 + -24 | 0;
           HEAP32[$1403 >> 2] = $1414;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1414);
           $1415 = HEAP32[$1403 >> 2] | 0;
          } while (($1415 | 0) != ($1413 | 0));
          $1417 = $1412 + -48 | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1417);
          $1418 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14065) | 0;
          HEAP32[$5 >> 2] = HEAP32[$1418 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$1418 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$1418 + 8 >> 2];
          HEAP32[$1418 >> 2] = 0;
          HEAP32[$1418 + 4 >> 2] = 0;
          HEAP32[$1418 + 8 >> 2] = 0;
          $1421 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0;
          HEAP32[$4 >> 2] = HEAP32[$1421 >> 2];
          HEAP32[$4 + 4 >> 2] = HEAP32[$1421 + 4 >> 2];
          HEAP32[$4 + 8 >> 2] = HEAP32[$1421 + 8 >> 2];
          HEAP32[$1421 >> 2] = 0;
          HEAP32[$1421 + 4 >> 2] = 0;
          HEAP32[$1421 + 8 >> 2] = 0;
          $1424 = HEAP8[$0 >> 0] | 0;
          $1426 = ($1424 & 1) == 0;
          $1436 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1426 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1426 ? ($1424 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
          HEAP32[$3 >> 2] = HEAP32[$1436 >> 2];
          HEAP32[$3 + 4 >> 2] = HEAP32[$1436 + 4 >> 2];
          HEAP32[$3 + 8 >> 2] = HEAP32[$1436 + 8 >> 2];
          HEAP32[$1436 >> 2] = 0;
          HEAP32[$1436 + 4 >> 2] = 0;
          HEAP32[$1436 + 8 >> 2] = 0;
          $1439 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0;
          HEAP32[$2 >> 2] = HEAP32[$1439 >> 2];
          HEAP32[$2 + 4 >> 2] = HEAP32[$1439 + 4 >> 2];
          HEAP32[$2 + 8 >> 2] = HEAP32[$1439 + 8 >> 2];
          HEAP32[$1439 >> 2] = 0;
          HEAP32[$1439 + 4 >> 2] = 0;
          HEAP32[$1439 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1417, $1);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$06$i248 = $1401;
         }
        }
       }
      } else $$06$i248 = $first; else $$06$i248 = $first; else $$06$i248 = $first;
      $$0 = $$06$i248;
      break L1;
      break;
     }
    case 109:
     {
      $1442 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($76, 14083, 1);
      $1443 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1442, $last, $76, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($76);
      $$0 = ($1443 | 0) == ($1442 | 0) ? $first : $1443;
      break L1;
      break;
     }
    case 77:
     {
      $1445 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($77, 14085, 2);
      $1446 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1445, $last, $77, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($77);
      $$0 = ($1446 | 0) == ($1445 | 0) ? $first : $1446;
      break L1;
      break;
     }
    case 115:
     {
      $1448 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($78, 14088, 2);
      $1449 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1448, $last, $78, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($78);
      $$0 = ($1449 | 0) == ($1448 | 0) ? $first : $1449;
      break L1;
      break;
     }
    case 83:
     {
      $1451 = $first + 2 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($79, 14091, 3);
      $1452 = __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($1451, $last, $79, $db) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($79);
      STACKTOP = sp;
      return (($1452 | 0) == ($1451 | 0) ? $first : $1452) | 0;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 115:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 99:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 99) {
       $1463 = $first + 2 | 0;
       $1464 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1463, $last, $db) | 0;
       if (($1464 | 0) == ($1463 | 0)) $$06$i = $first; else {
        $1466 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1464, $last, $db) | 0;
        if (($1466 | 0) == ($1464 | 0)) $$06$i = $first; else {
         $1468 = $db + 4 | 0;
         $1469 = HEAP32[$1468 >> 2] | 0;
         if ((($1469 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$06$i = $first; else {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, $1469 + -24 | 0);
          $1477 = HEAP32[$1468 >> 2] | 0;
          $1478 = $1477 + -24 | 0;
          $1480 = $1477;
          do {
           $1479 = $1480 + -24 | 0;
           HEAP32[$1468 >> 2] = $1479;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1479);
           $1480 = HEAP32[$1468 >> 2] | 0;
          } while (($1480 | 0) != ($1478 | 0));
          $1482 = $1477 + -48 | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($6, $1482);
          $1483 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($6, 0, 14095) | 0;
          HEAP32[$5 >> 2] = HEAP32[$1483 >> 2];
          HEAP32[$5 + 4 >> 2] = HEAP32[$1483 + 4 >> 2];
          HEAP32[$5 + 8 >> 2] = HEAP32[$1483 + 8 >> 2];
          HEAP32[$1483 >> 2] = 0;
          HEAP32[$1483 + 4 >> 2] = 0;
          HEAP32[$1483 + 8 >> 2] = 0;
          $1486 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 13916) | 0;
          HEAP32[$4 >> 2] = HEAP32[$1486 >> 2];
          HEAP32[$4 + 4 >> 2] = HEAP32[$1486 + 4 >> 2];
          HEAP32[$4 + 8 >> 2] = HEAP32[$1486 + 8 >> 2];
          HEAP32[$1486 >> 2] = 0;
          HEAP32[$1486 + 4 >> 2] = 0;
          HEAP32[$1486 + 8 >> 2] = 0;
          $1489 = HEAP8[$0 >> 0] | 0;
          $1491 = ($1489 & 1) == 0;
          $1501 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $1491 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $1491 ? ($1489 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
          HEAP32[$3 >> 2] = HEAP32[$1501 >> 2];
          HEAP32[$3 + 4 >> 2] = HEAP32[$1501 + 4 >> 2];
          HEAP32[$3 + 8 >> 2] = HEAP32[$1501 + 8 >> 2];
          HEAP32[$1501 >> 2] = 0;
          HEAP32[$1501 + 4 >> 2] = 0;
          HEAP32[$1501 + 8 >> 2] = 0;
          $1504 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12619) | 0;
          HEAP32[$2 >> 2] = HEAP32[$1504 >> 2];
          HEAP32[$2 + 4 >> 2] = HEAP32[$1504 + 4 >> 2];
          HEAP32[$2 + 8 >> 2] = HEAP32[$1504 + 8 >> 2];
          HEAP32[$1504 >> 2] = 0;
          HEAP32[$1504 + 4 >> 2] = 0;
          HEAP32[$1504 + 8 >> 2] = 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1482, $1);
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $$06$i = $1466;
         }
        }
       }
      } else $$06$i = $first; else $$06$i = $first; else $$06$i = $first;
      $$0 = $$06$i;
      break L1;
      break;
     }
    case 112:
     {
      if (($83 | 0) <= 2) {
       $$0 = $first;
       break L1;
      }
      if ((HEAP8[$first >> 0] | 0) != 115) {
       $$0 = $first;
       break L1;
      }
      if ((HEAP8[$first + 1 >> 0] | 0) != 112) {
       $$0 = $first;
       break L1;
      }
      $1513 = $first + 2 | 0;
      $1514 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1513, $last, $db) | 0;
      $$0 = ($1514 | 0) == ($1513 | 0) ? $first : $1514;
      break L1;
      break;
     }
    case 114:
     {
      $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
      break L1;
      break;
     }
    case 116:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 116) {
       $1523 = $first + 2 | 0;
       $1524 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1523, $last, $db) | 0;
       if (($1524 | 0) == ($1523 | 0)) $$03$i211 = $first; else {
        $1528 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($1528 | 0)) $$03$i211 = $first; else {
         $1530 = $1528 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1530);
         $1531 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14108) | 0;
         HEAP32[$2 >> 2] = HEAP32[$1531 >> 2];
         HEAP32[$2 + 4 >> 2] = HEAP32[$1531 + 4 >> 2];
         HEAP32[$2 + 8 >> 2] = HEAP32[$1531 + 8 >> 2];
         HEAP32[$1531 >> 2] = 0;
         HEAP32[$1531 + 4 >> 2] = 0;
         HEAP32[$1531 + 8 >> 2] = 0;
         $1534 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
         HEAP32[$1 >> 2] = HEAP32[$1534 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$1534 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$1534 + 8 >> 2];
         HEAP32[$1534 >> 2] = 0;
         HEAP32[$1534 + 4 >> 2] = 0;
         HEAP32[$1534 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1530, $0);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
         $$03$i211 = $1524;
        }
       }
      } else $$03$i211 = $first; else $$03$i211 = $first; else $$03$i211 = $first;
      $$0 = $$03$i211;
      break L1;
      break;
     }
    case 122:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 122) {
       $1543 = $first + 2 | 0;
       $1544 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1543, $last, $db) | 0;
       if (($1544 | 0) == ($1543 | 0)) $$03$i200 = $first; else {
        $1548 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($1548 | 0)) $$03$i200 = $first; else {
         $1550 = $1548 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1550);
         $1551 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14108) | 0;
         HEAP32[$2 >> 2] = HEAP32[$1551 >> 2];
         HEAP32[$2 + 4 >> 2] = HEAP32[$1551 + 4 >> 2];
         HEAP32[$2 + 8 >> 2] = HEAP32[$1551 + 8 >> 2];
         HEAP32[$1551 >> 2] = 0;
         HEAP32[$1551 + 4 >> 2] = 0;
         HEAP32[$1551 + 8 >> 2] = 0;
         $1554 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
         HEAP32[$1 >> 2] = HEAP32[$1554 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$1554 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$1554 + 8 >> 2];
         HEAP32[$1554 >> 2] = 0;
         HEAP32[$1554 + 4 >> 2] = 0;
         HEAP32[$1554 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1550, $0);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
         $$03$i200 = $1544;
        }
       }
      } else $$03$i200 = $first; else $$03$i200 = $first; else $$03$i200 = $first;
      $$0 = $$03$i200;
      break L1;
      break;
     }
    case 90:
     {
      if (($81 - $t$0 | 0) <= 2) {
       $$0 = $first;
       break L1;
      }
      switch (HEAP8[$t$0 + 2 >> 0] | 0) {
      case 84:
       break;
      case 102:
       {
        if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) {
         $1662 = $first + 2 | 0;
         if ((HEAP8[$1662 >> 0] | 0) == 102) {
          $1665 = __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($1662, $last, $db) | 0;
          if (($1665 | 0) == ($1662 | 0)) $$03$i174 = $first; else {
           $1669 = HEAP32[$db + 4 >> 2] | 0;
           if ((HEAP32[$db >> 2] | 0) == ($1669 | 0)) $$03$i174 = $first; else {
            $1671 = $1669 + -24 | 0;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1671);
            $1672 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14117) | 0;
            HEAP32[$2 >> 2] = HEAP32[$1672 >> 2];
            HEAP32[$2 + 4 >> 2] = HEAP32[$1672 + 4 >> 2];
            HEAP32[$2 + 8 >> 2] = HEAP32[$1672 + 8 >> 2];
            HEAP32[$1672 >> 2] = 0;
            HEAP32[$1672 + 4 >> 2] = 0;
            HEAP32[$1672 + 8 >> 2] = 0;
            $1675 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
            HEAP32[$1 >> 2] = HEAP32[$1675 >> 2];
            HEAP32[$1 + 4 >> 2] = HEAP32[$1675 + 4 >> 2];
            HEAP32[$1 + 8 >> 2] = HEAP32[$1675 + 8 >> 2];
            HEAP32[$1675 >> 2] = 0;
            HEAP32[$1675 + 4 >> 2] = 0;
            HEAP32[$1675 + 8 >> 2] = 0;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1671, $0);
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
            $$03$i174 = $1665;
           }
          }
         } else $$03$i174 = $first;
        } else $$03$i174 = $first; else $$03$i174 = $first; else $$03$i174 = $first;
        $$0 = $$03$i174;
        break L1;
        break;
       }
      default:
       {
        $$0 = $first;
        break L1;
       }
      }
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 115) if ((HEAP8[$first + 1 >> 0] | 0) == 90) {
       $1569 = $first + 2 | 0;
       if ((HEAP8[$1569 >> 0] | 0) == 84) {
        $1572 = $db + 4 | 0;
        $1578 = ((HEAP32[$1572 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
        $1579 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($1569, $last, $db) | 0;
        $1581 = HEAP32[$db >> 2] | 0;
        $1585 = ((HEAP32[$1572 >> 2] | 0) - $1581 | 0) / 24 | 0;
        if (($1579 | 0) == ($1569 | 0)) $$03$i = $first; else {
         HEAP8[$1 >> 0] = 20;
         dest = $1 + 1 | 0;
         src = 14117;
         stop = dest + 10 | 0;
         do {
          HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
          dest = dest + 1 | 0;
          src = src + 1 | 0;
         } while ((dest | 0) < (stop | 0));
         HEAP8[$1 + 11 >> 0] = 0;
         if (($1578 | 0) != ($1585 | 0)) {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1581 + ($1578 * 24 | 0) | 0);
          $1591 = HEAP8[$2 >> 0] | 0;
          $1593 = ($1591 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1593 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $1593 ? ($1591 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
          $1603 = $3 + 8 | 0;
          $1604 = $3 + 1 | 0;
          $1605 = $3 + 4 | 0;
          $k$0$i621 = $1578 + 1 | 0;
          if (($k$0$i621 | 0) != ($1585 | 0)) {
           $k$0$i622 = $k$0$i621;
           do {
            __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0$i622 * 24 | 0) | 0);
            $1609 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($4, 0, 12716) | 0;
            HEAP32[$3 >> 2] = HEAP32[$1609 >> 2];
            HEAP32[$3 + 4 >> 2] = HEAP32[$1609 + 4 >> 2];
            HEAP32[$3 + 8 >> 2] = HEAP32[$1609 + 8 >> 2];
            HEAP32[$1609 >> 2] = 0;
            HEAP32[$1609 + 4 >> 2] = 0;
            HEAP32[$1609 + 8 >> 2] = 0;
            $1612 = HEAP8[$3 >> 0] | 0;
            $1614 = ($1612 & 1) == 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $1614 ? $1604 : HEAP32[$1603 >> 2] | 0, $1614 ? ($1612 & 255) >>> 1 : HEAP32[$1605 >> 2] | 0) | 0;
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
            __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
            $k$0$i622 = $k$0$i622 + 1 | 0;
           } while (($k$0$i622 | 0) != ($1585 | 0));
          }
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
         if (($1585 | 0) != ($1578 | 0)) {
          $k1$0$i618 = $1585;
          do {
           $1623 = HEAP32[$1572 >> 2] | 0;
           $1624 = $1623 + -24 | 0;
           $1626 = $1623;
           do {
            $1625 = $1626 + -24 | 0;
            HEAP32[$1572 >> 2] = $1625;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1625);
            $1626 = HEAP32[$1572 >> 2] | 0;
           } while (($1626 | 0) != ($1624 | 0));
           $k1$0$i618 = $k1$0$i618 + -1 | 0;
          } while (($k1$0$i618 | 0) != ($1578 | 0));
         };
         HEAP32[$6 >> 2] = HEAP32[$1 >> 2];
         HEAP32[$6 + 4 >> 2] = HEAP32[$1 + 4 >> 2];
         HEAP32[$6 + 8 >> 2] = HEAP32[$1 + 8 >> 2];
         HEAP32[$1 >> 2] = 0;
         HEAP32[$1 + 4 >> 2] = 0;
         HEAP32[$1 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($5, $6);
         $1632 = HEAP32[$1572 >> 2] | 0;
         $1634 = HEAP32[$db + 8 >> 2] | 0;
         if ($1632 >>> 0 < $1634 >>> 0) {
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1632, $5);
          HEAP32[$1572 >> 2] = (HEAP32[$1572 >> 2] | 0) + 24;
         } else {
          $1641 = HEAP32[$db >> 2] | 0;
          $1642 = $1632 - $1641 | 0;
          $1643 = ($1642 | 0) / 24 | 0;
          $1644 = $1643 + 1 | 0;
          if (($1642 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
          $1648 = ($1634 - $1641 | 0) / 24 | 0;
          if ($1648 >>> 0 < 1073741823) {
           $1650 = $1648 << 1;
           $$0$i$i$i$i = $1650 >>> 0 < $1644 >>> 0 ? $1644 : $1650;
          } else $$0$i$i$i$i = 2147483647;
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i$i, $1643, $db + 12 | 0);
          $1653 = $0 + 8 | 0;
          $1654 = HEAP32[$1653 >> 2] | 0;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1654, $5);
          HEAP32[$1653 >> 2] = $1654 + 24;
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         $$03$i = $1579;
        }
       } else $$03$i = $first;
      } else $$03$i = $first; else $$03$i = $first; else $$03$i = $first;
      $$0 = $$03$i;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 116:
   {
    switch (HEAP8[$t$0 + 1 >> 0] | 0) {
    case 105:
    case 101:
     {
      L600 : do if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) {
       $1685 = HEAP8[$first + 1 >> 0] | 0;
       switch ($1685 << 24 >> 24) {
       case 105:
       case 101:
        break;
       default:
        {
         $$03$i189 = $first;
         break L600;
        }
       }
       $1687 = $first + 2 | 0;
       if ($1685 << 24 >> 24 == 101) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0; else $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($1687, $last, $db) | 0;
       if (($t$0$i | 0) == ($1687 | 0)) $$03$i189 = $first; else {
        $1693 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($1693 | 0)) $$03$i189 = $first; else {
         $1695 = $1693 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $1695);
         $1696 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 14128) | 0;
         HEAP32[$2 >> 2] = HEAP32[$1696 >> 2];
         HEAP32[$2 + 4 >> 2] = HEAP32[$1696 + 4 >> 2];
         HEAP32[$2 + 8 >> 2] = HEAP32[$1696 + 8 >> 2];
         HEAP32[$1696 >> 2] = 0;
         HEAP32[$1696 + 4 >> 2] = 0;
         HEAP32[$1696 + 8 >> 2] = 0;
         $1699 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
         HEAP32[$1 >> 2] = HEAP32[$1699 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$1699 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$1699 + 8 >> 2];
         HEAP32[$1699 >> 2] = 0;
         HEAP32[$1699 + 4 >> 2] = 0;
         HEAP32[$1699 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1695, $0);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
         $$03$i189 = $t$0$i;
        }
       }
      } else $$03$i189 = $first; else $$03$i189 = $first; while (0);
      $$0 = $$03$i189;
      break L1;
      break;
     }
    case 114:
     {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($80, 14136);
      $1702 = $db + 4 | 0;
      $1703 = HEAP32[$1702 >> 2] | 0;
      $1705 = HEAP32[$db + 8 >> 2] | 0;
      if ($1703 >>> 0 < $1705 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1703, $80);
       HEAP32[$1702 >> 2] = (HEAP32[$1702 >> 2] | 0) + 24;
      } else {
       $1712 = HEAP32[$db >> 2] | 0;
       $1713 = $1703 - $1712 | 0;
       $1714 = ($1713 | 0) / 24 | 0;
       $1715 = $1714 + 1 | 0;
       if (($1713 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $1719 = ($1705 - $1712 | 0) / 24 | 0;
       if ($1719 >>> 0 < 1073741823) {
        $1721 = $1719 << 1;
        $$0$i$i$i = $1721 >>> 0 < $1715 >>> 0 ? $1715 : $1721;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $1714, $db + 12 | 0);
       $1724 = $0 + 8 | 0;
       $1725 = HEAP32[$1724 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1725, $80);
       HEAP32[$1724 >> 2] = $1725 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($80);
      $$0 = $first + 2 | 0;
      break L1;
      break;
     }
    case 119:
     {
      if (($83 | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 116) if ((HEAP8[$first + 1 >> 0] | 0) == 119) {
       $1734 = $first + 2 | 0;
       $1735 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($1734, $last, $db) | 0;
       if (($1735 | 0) == ($1734 | 0)) $$02$i = $first; else {
        $1739 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($1739 | 0)) $$02$i = $first; else {
         $1741 = $1739 + -24 | 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($2, $1741);
         $1742 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14142) | 0;
         HEAP32[$1 >> 2] = HEAP32[$1742 >> 2];
         HEAP32[$1 + 4 >> 2] = HEAP32[$1742 + 4 >> 2];
         HEAP32[$1 + 8 >> 2] = HEAP32[$1742 + 8 >> 2];
         HEAP32[$1742 >> 2] = 0;
         HEAP32[$1742 + 4 >> 2] = 0;
         HEAP32[$1742 + 8 >> 2] = 0;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($1741, $0);
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
         $$02$i = $1735;
        }
       }
      } else $$02$i = $first; else $$02$i = $first; else $$02$i = $first;
      $$0 = $$02$i;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 57:
  case 56:
  case 55:
  case 54:
  case 53:
  case 52:
  case 51:
  case 50:
  case 49:
   {
    $$0 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    break L1;
    break;
   }
  default:
   {
    $$0 = $first;
    break L1;
   }
  } while (0);
 } else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i100 = 0, $$0$i$i$i105 = 0, $$0$i$i$i110 = 0, $$0$i$i$i115 = 0, $$0$i$i$i120 = 0, $$0$i$i$i125 = 0, $$0$i$i$i130 = 0, $$0$i$i$i135 = 0, $$0$i$i$i140 = 0, $$0$i$i$i145 = 0, $$0$i$i$i15 = 0, $$0$i$i$i150 = 0, $$0$i$i$i155 = 0, $$0$i$i$i160 = 0, $$0$i$i$i165 = 0, $$0$i$i$i170 = 0, $$0$i$i$i175 = 0, $$0$i$i$i180 = 0, $$0$i$i$i185 = 0, $$0$i$i$i190 = 0, $$0$i$i$i195 = 0, $$0$i$i$i20 = 0, $$0$i$i$i200 = 0, $$0$i$i$i205 = 0, $$0$i$i$i210 = 0, $$0$i$i$i215 = 0, $$0$i$i$i220 = 0, $$0$i$i$i225 = 0, $$0$i$i$i25 = 0, $$0$i$i$i30 = 0, $$0$i$i$i35 = 0, $$0$i$i$i40 = 0, $$0$i$i$i45 = 0, $$0$i$i$i5 = 0, $$0$i$i$i50 = 0, $$0$i$i$i55 = 0, $$0$i$i$i60 = 0, $$0$i$i$i65 = 0, $$0$i$i$i70 = 0, $$0$i$i$i75 = 0, $$0$i$i$i80 = 0, $$0$i$i$i85 = 0, $$0$i$i$i90 = 0, $$0$i$i$i95 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1009 = 0, $1011 = 0, $1014 = 0, $1015 = 0, $1021 = 0, $1022 = 0, $1024 = 0, $103 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1038 = 0, $104 = 0, $1040 = 0, $1043 = 0, $1044 = 0, $1047 = 0, $1048 = 0, $1050 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $1060 = 0, $1064 = 0, $1066 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1073 = 0, $1074 = 0, $1076 = 0, $108 = 0, $1083 = 0, $1084 = 0, $1085 = 0, $1086 = 0, $1090 = 0, $1092 = 0, $1095 = 0, $1096 = 0, $1099 = 0, $11 = 0, $110 = 0, $1100 = 0, $1102 = 0, $1109 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1116 = 0, $1118 = 0, $1121 = 0, $1122 = 0, $1125 = 0, $1126 = 0, $1128 = 0, $1135 = 0, $1136 = 0, $1137 = 0, $1138 = 0, $1142 = 0, $1144 = 0, $1147 = 0, $1148 = 0, $1151 = 0, $1152 = 0, $1154 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1168 = 0, $117 = 0, $1170 = 0, $1173 = 0, $1174 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1183 = 0, $119 = 0, $1190 = 0, $1191 = 0, $1192 = 0, $1193 = 0, $1197 = 0, $1199 = 0, $12 = 0, $120 = 0, $1202 = 0, $1203 = 0, $1209 = 0, $1210 = 0, $1212 = 0, $1219 = 0, $1220 = 0, $1221 = 0, $1222 = 0, $1226 = 0, $1228 = 0, $1231 = 0, $1232 = 0, $1235 = 0, $1236 = 0, $1238 = 0, $124 = 0, $1245 = 0, $1246 = 0, $1247 = 0, $1248 = 0, $1252 = 0, $1254 = 0, $1257 = 0, $1258 = 0, $126 = 0, $1261 = 0, $1262 = 0, $1264 = 0, $1271 = 0, $1272 = 0, $1273 = 0, $1274 = 0, $1278 = 0, $1280 = 0, $1283 = 0, $1284 = 0, $1287 = 0, $1288 = 0, $129 = 0, $1290 = 0, $1297 = 0, $1298 = 0, $1299 = 0, $13 = 0, $130 = 0, $1300 = 0, $1304 = 0, $1306 = 0, $1309 = 0, $1310 = 0, $1316 = 0, $1317 = 0, $1321 = 0, $133 = 0, $134 = 0, $136 = 0, $14 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $15 = 0, $150 = 0, $152 = 0, $155 = 0, $156 = 0, $16 = 0, $162 = 0, $163 = 0, $165 = 0, $17 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $179 = 0, $18 = 0, $181 = 0, $184 = 0, $185 = 0, $188 = 0, $189 = 0, $19 = 0, $191 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $205 = 0, $207 = 0, $21 = 0, $210 = 0, $211 = 0, $214 = 0, $215 = 0, $217 = 0, $22 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $23 = 0, $231 = 0, $233 = 0, $236 = 0, $237 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $247 = 0, $25 = 0, $254 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $27 = 0, $271 = 0, $273 = 0, $276 = 0, $277 = 0, $28 = 0, $280 = 0, $281 = 0, $283 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $297 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $33 = 0, $330 = 0, $332 = 0, $335 = 0, $336 = 0, $339 = 0, $34 = 0, $340 = 0, $342 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $356 = 0, $358 = 0, $36 = 0, $361 = 0, $362 = 0, $365 = 0, $366 = 0, $368 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $38 = 0, $382 = 0, $384 = 0, $387 = 0, $388 = 0, $39 = 0, $394 = 0, $395 = 0, $397 = 0, $4 = 0, $40 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $41 = 0, $411 = 0, $413 = 0, $416 = 0, $417 = 0, $42 = 0, $420 = 0, $421 = 0, $423 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $437 = 0, $439 = 0, $44 = 0, $442 = 0, $443 = 0, $446 = 0, $447 = 0, $449 = 0, $45 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $463 = 0, $465 = 0, $468 = 0, $469 = 0, $475 = 0, $476 = 0, $478 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $492 = 0, $494 = 0, $497 = 0, $498 = 0, $5 = 0, $501 = 0, $502 = 0, $504 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $518 = 0, $520 = 0, $523 = 0, $524 = 0, $530 = 0, $531 = 0, $533 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $547 = 0, $549 = 0, $55 = 0, $552 = 0, $553 = 0, $559 = 0, $56 = 0, $560 = 0, $562 = 0, $569 = 0, $570 = 0, $571 = 0, $572 = 0, $576 = 0, $578 = 0, $58 = 0, $581 = 0, $582 = 0, $585 = 0, $586 = 0, $590 = 0, $593 = 0, $594 = 0, $596 = 0, $6 = 0, $603 = 0, $604 = 0, $605 = 0, $606 = 0, $610 = 0, $612 = 0, $615 = 0, $616 = 0, $619 = 0, $620 = 0, $622 = 0, $629 = 0, $630 = 0, $631 = 0, $632 = 0, $636 = 0, $638 = 0, $641 = 0, $642 = 0, $645 = 0, $646 = 0, $648 = 0, $65 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $66 = 0, $662 = 0, $664 = 0, $667 = 0, $668 = 0, $67 = 0, $674 = 0, $675 = 0, $677 = 0, $68 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $691 = 0, $693 = 0, $696 = 0, $697 = 0, $7 = 0, $700 = 0, $701 = 0, $703 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $717 = 0, $719 = 0, $72 = 0, $722 = 0, $723 = 0, $726 = 0, $727 = 0, $729 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $743 = 0, $745 = 0, $748 = 0, $749 = 0, $752 = 0, $753 = 0, $755 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $769 = 0, $77 = 0, $771 = 0, $774 = 0, $775 = 0, $778 = 0, $779 = 0, $78 = 0, $781 = 0, $788 = 0, $789 = 0, $790 = 0, $791 = 0, $795 = 0, $797 = 0, $8 = 0, $800 = 0, $801 = 0, $807 = 0, $808 = 0, $81 = 0, $810 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $824 = 0, $826 = 0, $829 = 0, $830 = 0, $833 = 0, $834 = 0, $836 = 0, $84 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $850 = 0, $852 = 0, $855 = 0, $856 = 0, $859 = 0, $860 = 0, $862 = 0, $869 = 0, $870 = 0, $871 = 0, $872 = 0, $876 = 0, $878 = 0, $881 = 0, $882 = 0, $885 = 0, $886 = 0, $888 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $9 = 0, $902 = 0, $904 = 0, $907 = 0, $908 = 0, $91 = 0, $911 = 0, $912 = 0, $914 = 0, $92 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $928 = 0, $93 = 0, $930 = 0, $933 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $957 = 0, $959 = 0, $962 = 0, $963 = 0, $966 = 0, $967 = 0, $969 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $983 = 0, $985 = 0, $988 = 0, $989 = 0, $992 = 0, $993 = 0, $995 = 0, $__v$i$i224 = 0, dest = 0, sp = 0, src = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 1136 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i224 = sp + 1104 | 0;
 $0 = sp + 1080 | 0;
 $1 = sp + 1056 | 0;
 $2 = sp + 1032 | 0;
 $3 = sp + 1008 | 0;
 $4 = sp + 984 | 0;
 $5 = sp + 960 | 0;
 $6 = sp + 936 | 0;
 $7 = sp + 912 | 0;
 $8 = sp + 888 | 0;
 $9 = sp + 864 | 0;
 $10 = sp + 840 | 0;
 $11 = sp + 816 | 0;
 $12 = sp + 792 | 0;
 $13 = sp + 768 | 0;
 $14 = sp + 744 | 0;
 $15 = sp + 720 | 0;
 $16 = sp + 696 | 0;
 $17 = sp + 672 | 0;
 $18 = sp + 648 | 0;
 $19 = sp + 624 | 0;
 $20 = sp + 600 | 0;
 $21 = sp + 576 | 0;
 $22 = sp + 552 | 0;
 $23 = sp + 528 | 0;
 $24 = sp + 504 | 0;
 $25 = sp + 480 | 0;
 $26 = sp + 456 | 0;
 $27 = sp + 432 | 0;
 $28 = sp + 408 | 0;
 $29 = sp + 384 | 0;
 $30 = sp + 360 | 0;
 $31 = sp + 336 | 0;
 $32 = sp + 312 | 0;
 $33 = sp + 288 | 0;
 $34 = sp + 264 | 0;
 $35 = sp + 240 | 0;
 $36 = sp + 216 | 0;
 $37 = sp + 192 | 0;
 $38 = sp + 168 | 0;
 $39 = sp + 144 | 0;
 $40 = sp + 120 | 0;
 $41 = sp + 96 | 0;
 $42 = sp + 72 | 0;
 $43 = sp + 48 | 0;
 $44 = sp + 24 | 0;
 $45 = sp;
 L1 : do if (($last - $first | 0) > 1) do switch (HEAP8[$first >> 0] | 0) {
 case 97:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 97:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($0, 12949);
     $55 = $db + 4 | 0;
     $56 = HEAP32[$55 >> 2] | 0;
     $58 = HEAP32[$db + 8 >> 2] | 0;
     if ($56 >>> 0 < $58 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($56, $0);
      HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 24;
     } else {
      $65 = HEAP32[$db >> 2] | 0;
      $66 = $56 - $65 | 0;
      $67 = ($66 | 0) / 24 | 0;
      $68 = $67 + 1 | 0;
      if (($66 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $72 = ($58 - $65 | 0) / 24 | 0;
      if ($72 >>> 0 < 1073741823) {
       $74 = $72 << 1;
       $$0$i$i$i = $74 >>> 0 < $68 >>> 0 ? $68 : $74;
      } else $$0$i$i$i = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i, $67, $db + 12 | 0);
      $77 = $__v$i$i224 + 8 | 0;
      $78 = HEAP32[$77 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($78, $0);
      HEAP32[$77 >> 2] = $78 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 110:
   case 100:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($1, 12960);
     $81 = $db + 4 | 0;
     $82 = HEAP32[$81 >> 2] | 0;
     $84 = HEAP32[$db + 8 >> 2] | 0;
     if ($82 >>> 0 < $84 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1);
      HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 24;
     } else {
      $91 = HEAP32[$db >> 2] | 0;
      $92 = $82 - $91 | 0;
      $93 = ($92 | 0) / 24 | 0;
      $94 = $93 + 1 | 0;
      if (($92 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $98 = ($84 - $91 | 0) / 24 | 0;
      if ($98 >>> 0 < 1073741823) {
       $100 = $98 << 1;
       $$0$i$i$i5 = $100 >>> 0 < $94 >>> 0 ? $94 : $100;
      } else $$0$i$i$i5 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i5, $93, $db + 12 | 0);
      $103 = $__v$i$i224 + 8 | 0;
      $104 = HEAP32[$103 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($104, $1);
      HEAP32[$103 >> 2] = $104 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 78:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($2, 12970);
     $107 = $db + 4 | 0;
     $108 = HEAP32[$107 >> 2] | 0;
     $110 = HEAP32[$db + 8 >> 2] | 0;
     if ($108 >>> 0 < $110 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($108, $2);
      HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + 24;
     } else {
      $117 = HEAP32[$db >> 2] | 0;
      $118 = $108 - $117 | 0;
      $119 = ($118 | 0) / 24 | 0;
      $120 = $119 + 1 | 0;
      if (($118 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $124 = ($110 - $117 | 0) / 24 | 0;
      if ($124 >>> 0 < 1073741823) {
       $126 = $124 << 1;
       $$0$i$i$i10 = $126 >>> 0 < $120 >>> 0 ? $120 : $126;
      } else $$0$i$i$i10 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i10, $119, $db + 12 | 0);
      $129 = $__v$i$i224 + 8 | 0;
      $130 = HEAP32[$129 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($130, $2);
      HEAP32[$129 >> 2] = $130 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 83:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($3, 12981);
     $133 = $db + 4 | 0;
     $134 = HEAP32[$133 >> 2] | 0;
     $136 = HEAP32[$db + 8 >> 2] | 0;
     if ($134 >>> 0 < $136 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($134, $3);
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 24;
     } else {
      $143 = HEAP32[$db >> 2] | 0;
      $144 = $134 - $143 | 0;
      $145 = ($144 | 0) / 24 | 0;
      $146 = $145 + 1 | 0;
      if (($144 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $150 = ($136 - $143 | 0) / 24 | 0;
      if ($150 >>> 0 < 1073741823) {
       $152 = $150 << 1;
       $$0$i$i$i15 = $152 >>> 0 < $146 >>> 0 ? $146 : $152;
      } else $$0$i$i$i15 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i15, $145, $db + 12 | 0);
      $155 = $__v$i$i224 + 8 | 0;
      $156 = HEAP32[$155 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($156, $3);
      HEAP32[$155 >> 2] = $156 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 99:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 108:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($4, 12991);
     $162 = $db + 4 | 0;
     $163 = HEAP32[$162 >> 2] | 0;
     $165 = HEAP32[$db + 8 >> 2] | 0;
     if ($163 >>> 0 < $165 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $4);
      HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 24;
     } else {
      $172 = HEAP32[$db >> 2] | 0;
      $173 = $163 - $172 | 0;
      $174 = ($173 | 0) / 24 | 0;
      $175 = $174 + 1 | 0;
      if (($173 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $179 = ($165 - $172 | 0) / 24 | 0;
      if ($179 >>> 0 < 1073741823) {
       $181 = $179 << 1;
       $$0$i$i$i20 = $181 >>> 0 < $175 >>> 0 ? $175 : $181;
      } else $$0$i$i$i20 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i20, $174, $db + 12 | 0);
      $184 = $__v$i$i224 + 8 | 0;
      $185 = HEAP32[$184 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($185, $4);
      HEAP32[$184 >> 2] = $185 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 109:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($5, 13002);
     $188 = $db + 4 | 0;
     $189 = HEAP32[$188 >> 2] | 0;
     $191 = HEAP32[$db + 8 >> 2] | 0;
     if ($189 >>> 0 < $191 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($189, $5);
      HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 24;
     } else {
      $198 = HEAP32[$db >> 2] | 0;
      $199 = $189 - $198 | 0;
      $200 = ($199 | 0) / 24 | 0;
      $201 = $200 + 1 | 0;
      if (($199 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $205 = ($191 - $198 | 0) / 24 | 0;
      if ($205 >>> 0 < 1073741823) {
       $207 = $205 << 1;
       $$0$i$i$i25 = $207 >>> 0 < $201 >>> 0 ? $201 : $207;
      } else $$0$i$i$i25 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i25, $200, $db + 12 | 0);
      $210 = $__v$i$i224 + 8 | 0;
      $211 = HEAP32[$210 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($211, $5);
      HEAP32[$210 >> 2] = $211 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 111:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($6, 13012);
     $214 = $db + 4 | 0;
     $215 = HEAP32[$214 >> 2] | 0;
     $217 = HEAP32[$db + 8 >> 2] | 0;
     if ($215 >>> 0 < $217 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($215, $6);
      HEAP32[$214 >> 2] = (HEAP32[$214 >> 2] | 0) + 24;
     } else {
      $224 = HEAP32[$db >> 2] | 0;
      $225 = $215 - $224 | 0;
      $226 = ($225 | 0) / 24 | 0;
      $227 = $226 + 1 | 0;
      if (($225 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $231 = ($217 - $224 | 0) / 24 | 0;
      if ($231 >>> 0 < 1073741823) {
       $233 = $231 << 1;
       $$0$i$i$i30 = $233 >>> 0 < $227 >>> 0 ? $227 : $233;
      } else $$0$i$i$i30 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i30, $226, $db + 12 | 0);
      $236 = $__v$i$i224 + 8 | 0;
      $237 = HEAP32[$236 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($237, $6);
      HEAP32[$236 >> 2] = $237 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 118:
    {
     $240 = $db + 63 | 0;
     $241 = HEAP8[$240 >> 0] | 0;
     HEAP8[$240 >> 0] = 0;
     $242 = $first + 2 | 0;
     $243 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($242, $last, $db) | 0;
     HEAP8[$240 >> 0] = $241;
     if (($243 | 0) == ($242 | 0)) {
      $$0 = $first;
      break L1;
     }
     $247 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($247 | 0)) {
      $$0 = $first;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($247 + -24 | 0, 0, 13022) | 0;
     HEAP8[$db + 60 >> 0] = 1;
     $$0 = $243;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 100:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 97:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($7, 13032);
     $254 = $db + 4 | 0;
     $255 = HEAP32[$254 >> 2] | 0;
     $257 = HEAP32[$db + 8 >> 2] | 0;
     if ($255 >>> 0 < $257 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($255, $7);
      HEAP32[$254 >> 2] = (HEAP32[$254 >> 2] | 0) + 24;
     } else {
      $264 = HEAP32[$db >> 2] | 0;
      $265 = $255 - $264 | 0;
      $266 = ($265 | 0) / 24 | 0;
      $267 = $266 + 1 | 0;
      if (($265 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $271 = ($257 - $264 | 0) / 24 | 0;
      if ($271 >>> 0 < 1073741823) {
       $273 = $271 << 1;
       $$0$i$i$i35 = $273 >>> 0 < $267 >>> 0 ? $267 : $273;
      } else $$0$i$i$i35 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i35, $266, $db + 12 | 0);
      $276 = $__v$i$i224 + 8 | 0;
      $277 = HEAP32[$276 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($277, $7);
      HEAP32[$276 >> 2] = $277 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($8, 13050);
     $280 = $db + 4 | 0;
     $281 = HEAP32[$280 >> 2] | 0;
     $283 = HEAP32[$db + 8 >> 2] | 0;
     if ($281 >>> 0 < $283 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($281, $8);
      HEAP32[$280 >> 2] = (HEAP32[$280 >> 2] | 0) + 24;
     } else {
      $290 = HEAP32[$db >> 2] | 0;
      $291 = $281 - $290 | 0;
      $292 = ($291 | 0) / 24 | 0;
      $293 = $292 + 1 | 0;
      if (($291 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $297 = ($283 - $290 | 0) / 24 | 0;
      if ($297 >>> 0 < 1073741823) {
       $299 = $297 << 1;
       $$0$i$i$i40 = $299 >>> 0 < $293 >>> 0 ? $293 : $299;
      } else $$0$i$i$i40 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i40, $292, $db + 12 | 0);
      $302 = $__v$i$i224 + 8 | 0;
      $303 = HEAP32[$302 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($303, $8);
      HEAP32[$302 >> 2] = $303 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 108:
    {
     $306 = _malloc(16) | 0;
     HEAP32[$9 + 8 >> 2] = $306;
     HEAP32[$9 >> 2] = 17;
     HEAP32[$9 + 4 >> 2] = 15;
     dest = $306;
     src = 13060;
     stop = dest + 15 | 0;
     do {
      HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
      dest = dest + 1 | 0;
      src = src + 1 | 0;
     } while ((dest | 0) < (stop | 0));
     HEAP8[$306 + 15 >> 0] = 0;
     $310 = $9 + 12 | 0;
     HEAP32[$310 >> 2] = 0;
     HEAP32[$310 + 4 >> 2] = 0;
     HEAP32[$310 + 8 >> 2] = 0;
     $313 = $db + 4 | 0;
     $314 = HEAP32[$313 >> 2] | 0;
     $316 = HEAP32[$db + 8 >> 2] | 0;
     if ($314 >>> 0 < $316 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($314, $9);
      HEAP32[$313 >> 2] = (HEAP32[$313 >> 2] | 0) + 24;
     } else {
      $323 = HEAP32[$db >> 2] | 0;
      $324 = $314 - $323 | 0;
      $325 = ($324 | 0) / 24 | 0;
      $326 = $325 + 1 | 0;
      if (($324 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $330 = ($316 - $323 | 0) / 24 | 0;
      if ($330 >>> 0 < 1073741823) {
       $332 = $330 << 1;
       $$0$i$i$i45 = $332 >>> 0 < $326 >>> 0 ? $326 : $332;
      } else $$0$i$i$i45 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i45, $325, $db + 12 | 0);
      $335 = $__v$i$i224 + 8 | 0;
      $336 = HEAP32[$335 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($336, $9);
      HEAP32[$335 >> 2] = $336 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 118:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($10, 13076);
     $339 = $db + 4 | 0;
     $340 = HEAP32[$339 >> 2] | 0;
     $342 = HEAP32[$db + 8 >> 2] | 0;
     if ($340 >>> 0 < $342 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($340, $10);
      HEAP32[$339 >> 2] = (HEAP32[$339 >> 2] | 0) + 24;
     } else {
      $349 = HEAP32[$db >> 2] | 0;
      $350 = $340 - $349 | 0;
      $351 = ($350 | 0) / 24 | 0;
      $352 = $351 + 1 | 0;
      if (($350 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $356 = ($342 - $349 | 0) / 24 | 0;
      if ($356 >>> 0 < 1073741823) {
       $358 = $356 << 1;
       $$0$i$i$i50 = $358 >>> 0 < $352 >>> 0 ? $352 : $358;
      } else $$0$i$i$i50 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i50, $351, $db + 12 | 0);
      $361 = $__v$i$i224 + 8 | 0;
      $362 = HEAP32[$361 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($362, $10);
      HEAP32[$361 >> 2] = $362 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 86:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($11, 13086);
     $365 = $db + 4 | 0;
     $366 = HEAP32[$365 >> 2] | 0;
     $368 = HEAP32[$db + 8 >> 2] | 0;
     if ($366 >>> 0 < $368 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($366, $11);
      HEAP32[$365 >> 2] = (HEAP32[$365 >> 2] | 0) + 24;
     } else {
      $375 = HEAP32[$db >> 2] | 0;
      $376 = $366 - $375 | 0;
      $377 = ($376 | 0) / 24 | 0;
      $378 = $377 + 1 | 0;
      if (($376 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $382 = ($368 - $375 | 0) / 24 | 0;
      if ($382 >>> 0 < 1073741823) {
       $384 = $382 << 1;
       $$0$i$i$i55 = $384 >>> 0 < $378 >>> 0 ? $378 : $384;
      } else $$0$i$i$i55 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i55, $377, $db + 12 | 0);
      $387 = $__v$i$i224 + 8 | 0;
      $388 = HEAP32[$387 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($388, $11);
      HEAP32[$387 >> 2] = $388 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 101:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 111:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 13097);
     $394 = $db + 4 | 0;
     $395 = HEAP32[$394 >> 2] | 0;
     $397 = HEAP32[$db + 8 >> 2] | 0;
     if ($395 >>> 0 < $397 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($395, $12);
      HEAP32[$394 >> 2] = (HEAP32[$394 >> 2] | 0) + 24;
     } else {
      $404 = HEAP32[$db >> 2] | 0;
      $405 = $395 - $404 | 0;
      $406 = ($405 | 0) / 24 | 0;
      $407 = $406 + 1 | 0;
      if (($405 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $411 = ($397 - $404 | 0) / 24 | 0;
      if ($411 >>> 0 < 1073741823) {
       $413 = $411 << 1;
       $$0$i$i$i60 = $413 >>> 0 < $407 >>> 0 ? $407 : $413;
      } else $$0$i$i$i60 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i60, $406, $db + 12 | 0);
      $416 = $__v$i$i224 + 8 | 0;
      $417 = HEAP32[$416 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($417, $12);
      HEAP32[$416 >> 2] = $417 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 79:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($13, 13107);
     $420 = $db + 4 | 0;
     $421 = HEAP32[$420 >> 2] | 0;
     $423 = HEAP32[$db + 8 >> 2] | 0;
     if ($421 >>> 0 < $423 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($421, $13);
      HEAP32[$420 >> 2] = (HEAP32[$420 >> 2] | 0) + 24;
     } else {
      $430 = HEAP32[$db >> 2] | 0;
      $431 = $421 - $430 | 0;
      $432 = ($431 | 0) / 24 | 0;
      $433 = $432 + 1 | 0;
      if (($431 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $437 = ($423 - $430 | 0) / 24 | 0;
      if ($437 >>> 0 < 1073741823) {
       $439 = $437 << 1;
       $$0$i$i$i65 = $439 >>> 0 < $433 >>> 0 ? $433 : $439;
      } else $$0$i$i$i65 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i65, $432, $db + 12 | 0);
      $442 = $__v$i$i224 + 8 | 0;
      $443 = HEAP32[$442 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($443, $13);
      HEAP32[$442 >> 2] = $443 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 113:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($14, 13118);
     $446 = $db + 4 | 0;
     $447 = HEAP32[$446 >> 2] | 0;
     $449 = HEAP32[$db + 8 >> 2] | 0;
     if ($447 >>> 0 < $449 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($447, $14);
      HEAP32[$446 >> 2] = (HEAP32[$446 >> 2] | 0) + 24;
     } else {
      $456 = HEAP32[$db >> 2] | 0;
      $457 = $447 - $456 | 0;
      $458 = ($457 | 0) / 24 | 0;
      $459 = $458 + 1 | 0;
      if (($457 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $463 = ($449 - $456 | 0) / 24 | 0;
      if ($463 >>> 0 < 1073741823) {
       $465 = $463 << 1;
       $$0$i$i$i70 = $465 >>> 0 < $459 >>> 0 ? $459 : $465;
      } else $$0$i$i$i70 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i70, $458, $db + 12 | 0);
      $468 = $__v$i$i224 + 8 | 0;
      $469 = HEAP32[$468 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($469, $14);
      HEAP32[$468 >> 2] = $469 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 103:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($15, 13129);
     $475 = $db + 4 | 0;
     $476 = HEAP32[$475 >> 2] | 0;
     $478 = HEAP32[$db + 8 >> 2] | 0;
     if ($476 >>> 0 < $478 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($476, $15);
      HEAP32[$475 >> 2] = (HEAP32[$475 >> 2] | 0) + 24;
     } else {
      $485 = HEAP32[$db >> 2] | 0;
      $486 = $476 - $485 | 0;
      $487 = ($486 | 0) / 24 | 0;
      $488 = $487 + 1 | 0;
      if (($486 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $492 = ($478 - $485 | 0) / 24 | 0;
      if ($492 >>> 0 < 1073741823) {
       $494 = $492 << 1;
       $$0$i$i$i75 = $494 >>> 0 < $488 >>> 0 ? $488 : $494;
      } else $$0$i$i$i75 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i75, $487, $db + 12 | 0);
      $497 = $__v$i$i224 + 8 | 0;
      $498 = HEAP32[$497 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($498, $15);
      HEAP32[$497 >> 2] = $498 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 116:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($16, 13140);
     $501 = $db + 4 | 0;
     $502 = HEAP32[$501 >> 2] | 0;
     $504 = HEAP32[$db + 8 >> 2] | 0;
     if ($502 >>> 0 < $504 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($502, $16);
      HEAP32[$501 >> 2] = (HEAP32[$501 >> 2] | 0) + 24;
     } else {
      $511 = HEAP32[$db >> 2] | 0;
      $512 = $502 - $511 | 0;
      $513 = ($512 | 0) / 24 | 0;
      $514 = $513 + 1 | 0;
      if (($512 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $518 = ($504 - $511 | 0) / 24 | 0;
      if ($518 >>> 0 < 1073741823) {
       $520 = $518 << 1;
       $$0$i$i$i80 = $520 >>> 0 < $514 >>> 0 ? $514 : $520;
      } else $$0$i$i$i80 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i80, $513, $db + 12 | 0);
      $523 = $__v$i$i224 + 8 | 0;
      $524 = HEAP32[$523 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($524, $16);
      HEAP32[$523 >> 2] = $524 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 105:
  {
   if ((HEAP8[$first + 1 >> 0] | 0) != 120) {
    $$0 = $first;
    break L1;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($17, 13150);
   $530 = $db + 4 | 0;
   $531 = HEAP32[$530 >> 2] | 0;
   $533 = HEAP32[$db + 8 >> 2] | 0;
   if ($531 >>> 0 < $533 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($531, $17);
    HEAP32[$530 >> 2] = (HEAP32[$530 >> 2] | 0) + 24;
   } else {
    $540 = HEAP32[$db >> 2] | 0;
    $541 = $531 - $540 | 0;
    $542 = ($541 | 0) / 24 | 0;
    $543 = $542 + 1 | 0;
    if (($541 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $547 = ($533 - $540 | 0) / 24 | 0;
    if ($547 >>> 0 < 1073741823) {
     $549 = $547 << 1;
     $$0$i$i$i85 = $549 >>> 0 < $543 >>> 0 ? $543 : $549;
    } else $$0$i$i$i85 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i85, $542, $db + 12 | 0);
    $552 = $__v$i$i224 + 8 | 0;
    $553 = HEAP32[$552 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($553, $17);
    HEAP32[$552 >> 2] = $553 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17);
   $$0 = $first + 2 | 0;
   break L1;
   break;
  }
 case 108:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($18, 13161);
     $559 = $db + 4 | 0;
     $560 = HEAP32[$559 >> 2] | 0;
     $562 = HEAP32[$db + 8 >> 2] | 0;
     if ($560 >>> 0 < $562 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($560, $18);
      HEAP32[$559 >> 2] = (HEAP32[$559 >> 2] | 0) + 24;
     } else {
      $569 = HEAP32[$db >> 2] | 0;
      $570 = $560 - $569 | 0;
      $571 = ($570 | 0) / 24 | 0;
      $572 = $571 + 1 | 0;
      if (($570 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $576 = ($562 - $569 | 0) / 24 | 0;
      if ($576 >>> 0 < 1073741823) {
       $578 = $576 << 1;
       $$0$i$i$i90 = $578 >>> 0 < $572 >>> 0 ? $572 : $578;
      } else $$0$i$i$i90 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i90, $571, $db + 12 | 0);
      $581 = $__v$i$i224 + 8 | 0;
      $582 = HEAP32[$581 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($582, $18);
      HEAP32[$581 >> 2] = $582 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 105:
    {
     $585 = $first + 2 | 0;
     $586 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($585, $last, $db) | 0;
     if (($586 | 0) == ($585 | 0)) {
      $$0 = $first;
      break L1;
     }
     $590 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($590 | 0)) {
      $$0 = $first;
      break L1;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($590 + -24 | 0, 0, 13172) | 0;
     $$0 = $586;
     break L1;
     break;
    }
   case 115:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 13184);
     $593 = $db + 4 | 0;
     $594 = HEAP32[$593 >> 2] | 0;
     $596 = HEAP32[$db + 8 >> 2] | 0;
     if ($594 >>> 0 < $596 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($594, $19);
      HEAP32[$593 >> 2] = (HEAP32[$593 >> 2] | 0) + 24;
     } else {
      $603 = HEAP32[$db >> 2] | 0;
      $604 = $594 - $603 | 0;
      $605 = ($604 | 0) / 24 | 0;
      $606 = $605 + 1 | 0;
      if (($604 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $610 = ($596 - $603 | 0) / 24 | 0;
      if ($610 >>> 0 < 1073741823) {
       $612 = $610 << 1;
       $$0$i$i$i95 = $612 >>> 0 < $606 >>> 0 ? $606 : $612;
      } else $$0$i$i$i95 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i95, $605, $db + 12 | 0);
      $615 = $__v$i$i224 + 8 | 0;
      $616 = HEAP32[$615 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($616, $19);
      HEAP32[$615 >> 2] = $616 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 83:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($20, 13195);
     $619 = $db + 4 | 0;
     $620 = HEAP32[$619 >> 2] | 0;
     $622 = HEAP32[$db + 8 >> 2] | 0;
     if ($620 >>> 0 < $622 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($620, $20);
      HEAP32[$619 >> 2] = (HEAP32[$619 >> 2] | 0) + 24;
     } else {
      $629 = HEAP32[$db >> 2] | 0;
      $630 = $620 - $629 | 0;
      $631 = ($630 | 0) / 24 | 0;
      $632 = $631 + 1 | 0;
      if (($630 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $636 = ($622 - $629 | 0) / 24 | 0;
      if ($636 >>> 0 < 1073741823) {
       $638 = $636 << 1;
       $$0$i$i$i100 = $638 >>> 0 < $632 >>> 0 ? $632 : $638;
      } else $$0$i$i$i100 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i100, $631, $db + 12 | 0);
      $641 = $__v$i$i224 + 8 | 0;
      $642 = HEAP32[$641 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($642, $20);
      HEAP32[$641 >> 2] = $642 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 116:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 13207);
     $645 = $db + 4 | 0;
     $646 = HEAP32[$645 >> 2] | 0;
     $648 = HEAP32[$db + 8 >> 2] | 0;
     if ($646 >>> 0 < $648 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($646, $21);
      HEAP32[$645 >> 2] = (HEAP32[$645 >> 2] | 0) + 24;
     } else {
      $655 = HEAP32[$db >> 2] | 0;
      $656 = $646 - $655 | 0;
      $657 = ($656 | 0) / 24 | 0;
      $658 = $657 + 1 | 0;
      if (($656 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $662 = ($648 - $655 | 0) / 24 | 0;
      if ($662 >>> 0 < 1073741823) {
       $664 = $662 << 1;
       $$0$i$i$i105 = $664 >>> 0 < $658 >>> 0 ? $658 : $664;
      } else $$0$i$i$i105 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i105, $657, $db + 12 | 0);
      $667 = $__v$i$i224 + 8 | 0;
      $668 = HEAP32[$667 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($668, $21);
      HEAP32[$667 >> 2] = $668 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 109:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 105:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($22, 13217);
     $674 = $db + 4 | 0;
     $675 = HEAP32[$674 >> 2] | 0;
     $677 = HEAP32[$db + 8 >> 2] | 0;
     if ($675 >>> 0 < $677 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($675, $22);
      HEAP32[$674 >> 2] = (HEAP32[$674 >> 2] | 0) + 24;
     } else {
      $684 = HEAP32[$db >> 2] | 0;
      $685 = $675 - $684 | 0;
      $686 = ($685 | 0) / 24 | 0;
      $687 = $686 + 1 | 0;
      if (($685 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $691 = ($677 - $684 | 0) / 24 | 0;
      if ($691 >>> 0 < 1073741823) {
       $693 = $691 << 1;
       $$0$i$i$i110 = $693 >>> 0 < $687 >>> 0 ? $687 : $693;
      } else $$0$i$i$i110 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i110, $686, $db + 12 | 0);
      $696 = $__v$i$i224 + 8 | 0;
      $697 = HEAP32[$696 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($697, $22);
      HEAP32[$696 >> 2] = $697 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 73:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($23, 13227);
     $700 = $db + 4 | 0;
     $701 = HEAP32[$700 >> 2] | 0;
     $703 = HEAP32[$db + 8 >> 2] | 0;
     if ($701 >>> 0 < $703 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($701, $23);
      HEAP32[$700 >> 2] = (HEAP32[$700 >> 2] | 0) + 24;
     } else {
      $710 = HEAP32[$db >> 2] | 0;
      $711 = $701 - $710 | 0;
      $712 = ($711 | 0) / 24 | 0;
      $713 = $712 + 1 | 0;
      if (($711 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $717 = ($703 - $710 | 0) / 24 | 0;
      if ($717 >>> 0 < 1073741823) {
       $719 = $717 << 1;
       $$0$i$i$i115 = $719 >>> 0 < $713 >>> 0 ? $713 : $719;
      } else $$0$i$i$i115 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i115, $712, $db + 12 | 0);
      $722 = $__v$i$i224 + 8 | 0;
      $723 = HEAP32[$722 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($723, $23);
      HEAP32[$722 >> 2] = $723 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 108:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 13050);
     $726 = $db + 4 | 0;
     $727 = HEAP32[$726 >> 2] | 0;
     $729 = HEAP32[$db + 8 >> 2] | 0;
     if ($727 >>> 0 < $729 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($727, $24);
      HEAP32[$726 >> 2] = (HEAP32[$726 >> 2] | 0) + 24;
     } else {
      $736 = HEAP32[$db >> 2] | 0;
      $737 = $727 - $736 | 0;
      $738 = ($737 | 0) / 24 | 0;
      $739 = $738 + 1 | 0;
      if (($737 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $743 = ($729 - $736 | 0) / 24 | 0;
      if ($743 >>> 0 < 1073741823) {
       $745 = $743 << 1;
       $$0$i$i$i120 = $745 >>> 0 < $739 >>> 0 ? $739 : $745;
      } else $$0$i$i$i120 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i120, $738, $db + 12 | 0);
      $748 = $__v$i$i224 + 8 | 0;
      $749 = HEAP32[$748 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($749, $24);
      HEAP32[$748 >> 2] = $749 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 76:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($25, 13238);
     $752 = $db + 4 | 0;
     $753 = HEAP32[$752 >> 2] | 0;
     $755 = HEAP32[$db + 8 >> 2] | 0;
     if ($753 >>> 0 < $755 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($753, $25);
      HEAP32[$752 >> 2] = (HEAP32[$752 >> 2] | 0) + 24;
     } else {
      $762 = HEAP32[$db >> 2] | 0;
      $763 = $753 - $762 | 0;
      $764 = ($763 | 0) / 24 | 0;
      $765 = $764 + 1 | 0;
      if (($763 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $769 = ($755 - $762 | 0) / 24 | 0;
      if ($769 >>> 0 < 1073741823) {
       $771 = $769 << 1;
       $$0$i$i$i125 = $771 >>> 0 < $765 >>> 0 ? $765 : $771;
      } else $$0$i$i$i125 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i125, $764, $db + 12 | 0);
      $774 = $__v$i$i224 + 8 | 0;
      $775 = HEAP32[$774 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($775, $25);
      HEAP32[$774 >> 2] = $775 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 109:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($26, 13249);
     $778 = $db + 4 | 0;
     $779 = HEAP32[$778 >> 2] | 0;
     $781 = HEAP32[$db + 8 >> 2] | 0;
     if ($779 >>> 0 < $781 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($779, $26);
      HEAP32[$778 >> 2] = (HEAP32[$778 >> 2] | 0) + 24;
     } else {
      $788 = HEAP32[$db >> 2] | 0;
      $789 = $779 - $788 | 0;
      $790 = ($789 | 0) / 24 | 0;
      $791 = $790 + 1 | 0;
      if (($789 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $795 = ($781 - $788 | 0) / 24 | 0;
      if ($795 >>> 0 < 1073741823) {
       $797 = $795 << 1;
       $$0$i$i$i130 = $797 >>> 0 < $791 >>> 0 ? $791 : $797;
      } else $$0$i$i$i130 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i130, $790, $db + 12 | 0);
      $800 = $__v$i$i224 + 8 | 0;
      $801 = HEAP32[$800 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($801, $26);
      HEAP32[$800 >> 2] = $801 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 110:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 97:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($27, 13260);
     $807 = $db + 4 | 0;
     $808 = HEAP32[$807 >> 2] | 0;
     $810 = HEAP32[$db + 8 >> 2] | 0;
     if ($808 >>> 0 < $810 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($808, $27);
      HEAP32[$807 >> 2] = (HEAP32[$807 >> 2] | 0) + 24;
     } else {
      $817 = HEAP32[$db >> 2] | 0;
      $818 = $808 - $817 | 0;
      $819 = ($818 | 0) / 24 | 0;
      $820 = $819 + 1 | 0;
      if (($818 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $824 = ($810 - $817 | 0) / 24 | 0;
      if ($824 >>> 0 < 1073741823) {
       $826 = $824 << 1;
       $$0$i$i$i135 = $826 >>> 0 < $820 >>> 0 ? $820 : $826;
      } else $$0$i$i$i135 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i135, $819, $db + 12 | 0);
      $829 = $__v$i$i224 + 8 | 0;
      $830 = HEAP32[$829 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($830, $27);
      HEAP32[$829 >> 2] = $830 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($28, 13275);
     $833 = $db + 4 | 0;
     $834 = HEAP32[$833 >> 2] | 0;
     $836 = HEAP32[$db + 8 >> 2] | 0;
     if ($834 >>> 0 < $836 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($834, $28);
      HEAP32[$833 >> 2] = (HEAP32[$833 >> 2] | 0) + 24;
     } else {
      $843 = HEAP32[$db >> 2] | 0;
      $844 = $834 - $843 | 0;
      $845 = ($844 | 0) / 24 | 0;
      $846 = $845 + 1 | 0;
      if (($844 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $850 = ($836 - $843 | 0) / 24 | 0;
      if ($850 >>> 0 < 1073741823) {
       $852 = $850 << 1;
       $$0$i$i$i140 = $852 >>> 0 < $846 >>> 0 ? $846 : $852;
      } else $$0$i$i$i140 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i140, $845, $db + 12 | 0);
      $855 = $__v$i$i224 + 8 | 0;
      $856 = HEAP32[$855 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($856, $28);
      HEAP32[$855 >> 2] = $856 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 103:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($29, 13217);
     $859 = $db + 4 | 0;
     $860 = HEAP32[$859 >> 2] | 0;
     $862 = HEAP32[$db + 8 >> 2] | 0;
     if ($860 >>> 0 < $862 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($860, $29);
      HEAP32[$859 >> 2] = (HEAP32[$859 >> 2] | 0) + 24;
     } else {
      $869 = HEAP32[$db >> 2] | 0;
      $870 = $860 - $869 | 0;
      $871 = ($870 | 0) / 24 | 0;
      $872 = $871 + 1 | 0;
      if (($870 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $876 = ($862 - $869 | 0) / 24 | 0;
      if ($876 >>> 0 < 1073741823) {
       $878 = $876 << 1;
       $$0$i$i$i145 = $878 >>> 0 < $872 >>> 0 ? $872 : $878;
      } else $$0$i$i$i145 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i145, $871, $db + 12 | 0);
      $881 = $__v$i$i224 + 8 | 0;
      $882 = HEAP32[$881 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($882, $29);
      HEAP32[$881 >> 2] = $882 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($29);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 116:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($30, 13286);
     $885 = $db + 4 | 0;
     $886 = HEAP32[$885 >> 2] | 0;
     $888 = HEAP32[$db + 8 >> 2] | 0;
     if ($886 >>> 0 < $888 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($886, $30);
      HEAP32[$885 >> 2] = (HEAP32[$885 >> 2] | 0) + 24;
     } else {
      $895 = HEAP32[$db >> 2] | 0;
      $896 = $886 - $895 | 0;
      $897 = ($896 | 0) / 24 | 0;
      $898 = $897 + 1 | 0;
      if (($896 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $902 = ($888 - $895 | 0) / 24 | 0;
      if ($902 >>> 0 < 1073741823) {
       $904 = $902 << 1;
       $$0$i$i$i150 = $904 >>> 0 < $898 >>> 0 ? $898 : $904;
      } else $$0$i$i$i150 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i150, $897, $db + 12 | 0);
      $907 = $__v$i$i224 + 8 | 0;
      $908 = HEAP32[$907 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($908, $30);
      HEAP32[$907 >> 2] = $908 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($30);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 119:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($31, 13296);
     $911 = $db + 4 | 0;
     $912 = HEAP32[$911 >> 2] | 0;
     $914 = HEAP32[$db + 8 >> 2] | 0;
     if ($912 >>> 0 < $914 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($912, $31);
      HEAP32[$911 >> 2] = (HEAP32[$911 >> 2] | 0) + 24;
     } else {
      $921 = HEAP32[$db >> 2] | 0;
      $922 = $912 - $921 | 0;
      $923 = ($922 | 0) / 24 | 0;
      $924 = $923 + 1 | 0;
      if (($922 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $928 = ($914 - $921 | 0) / 24 | 0;
      if ($928 >>> 0 < 1073741823) {
       $930 = $928 << 1;
       $$0$i$i$i155 = $930 >>> 0 < $924 >>> 0 ? $924 : $930;
      } else $$0$i$i$i155 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i155, $923, $db + 12 | 0);
      $933 = $__v$i$i224 + 8 | 0;
      $934 = HEAP32[$933 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($934, $31);
      HEAP32[$933 >> 2] = $934 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($31);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 111:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 111:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($32, 13309);
     $940 = $db + 4 | 0;
     $941 = HEAP32[$940 >> 2] | 0;
     $943 = HEAP32[$db + 8 >> 2] | 0;
     if ($941 >>> 0 < $943 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($941, $32);
      HEAP32[$940 >> 2] = (HEAP32[$940 >> 2] | 0) + 24;
     } else {
      $950 = HEAP32[$db >> 2] | 0;
      $951 = $941 - $950 | 0;
      $952 = ($951 | 0) / 24 | 0;
      $953 = $952 + 1 | 0;
      if (($951 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $957 = ($943 - $950 | 0) / 24 | 0;
      if ($957 >>> 0 < 1073741823) {
       $959 = $957 << 1;
       $$0$i$i$i160 = $959 >>> 0 < $953 >>> 0 ? $953 : $959;
      } else $$0$i$i$i160 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i160, $952, $db + 12 | 0);
      $962 = $__v$i$i224 + 8 | 0;
      $963 = HEAP32[$962 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($963, $32);
      HEAP32[$962 >> 2] = $963 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($32);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 114:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($33, 13320);
     $966 = $db + 4 | 0;
     $967 = HEAP32[$966 >> 2] | 0;
     $969 = HEAP32[$db + 8 >> 2] | 0;
     if ($967 >>> 0 < $969 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($967, $33);
      HEAP32[$966 >> 2] = (HEAP32[$966 >> 2] | 0) + 24;
     } else {
      $976 = HEAP32[$db >> 2] | 0;
      $977 = $967 - $976 | 0;
      $978 = ($977 | 0) / 24 | 0;
      $979 = $978 + 1 | 0;
      if (($977 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $983 = ($969 - $976 | 0) / 24 | 0;
      if ($983 >>> 0 < 1073741823) {
       $985 = $983 << 1;
       $$0$i$i$i165 = $985 >>> 0 < $979 >>> 0 ? $979 : $985;
      } else $$0$i$i$i165 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i165, $978, $db + 12 | 0);
      $988 = $__v$i$i224 + 8 | 0;
      $989 = HEAP32[$988 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($989, $33);
      HEAP32[$988 >> 2] = $989 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($33);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 82:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($34, 13330);
     $992 = $db + 4 | 0;
     $993 = HEAP32[$992 >> 2] | 0;
     $995 = HEAP32[$db + 8 >> 2] | 0;
     if ($993 >>> 0 < $995 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($993, $34);
      HEAP32[$992 >> 2] = (HEAP32[$992 >> 2] | 0) + 24;
     } else {
      $1002 = HEAP32[$db >> 2] | 0;
      $1003 = $993 - $1002 | 0;
      $1004 = ($1003 | 0) / 24 | 0;
      $1005 = $1004 + 1 | 0;
      if (($1003 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1009 = ($995 - $1002 | 0) / 24 | 0;
      if ($1009 >>> 0 < 1073741823) {
       $1011 = $1009 << 1;
       $$0$i$i$i170 = $1011 >>> 0 < $1005 >>> 0 ? $1005 : $1011;
      } else $$0$i$i$i170 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i170, $1004, $db + 12 | 0);
      $1014 = $__v$i$i224 + 8 | 0;
      $1015 = HEAP32[$1014 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1015, $34);
      HEAP32[$1014 >> 2] = $1015 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($34);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 112:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 109:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($35, 13341);
     $1021 = $db + 4 | 0;
     $1022 = HEAP32[$1021 >> 2] | 0;
     $1024 = HEAP32[$db + 8 >> 2] | 0;
     if ($1022 >>> 0 < $1024 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1022, $35);
      HEAP32[$1021 >> 2] = (HEAP32[$1021 >> 2] | 0) + 24;
     } else {
      $1031 = HEAP32[$db >> 2] | 0;
      $1032 = $1022 - $1031 | 0;
      $1033 = ($1032 | 0) / 24 | 0;
      $1034 = $1033 + 1 | 0;
      if (($1032 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1038 = ($1024 - $1031 | 0) / 24 | 0;
      if ($1038 >>> 0 < 1073741823) {
       $1040 = $1038 << 1;
       $$0$i$i$i175 = $1040 >>> 0 < $1034 >>> 0 ? $1034 : $1040;
      } else $$0$i$i$i175 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i175, $1033, $db + 12 | 0);
      $1043 = $__v$i$i224 + 8 | 0;
      $1044 = HEAP32[$1043 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1044, $35);
      HEAP32[$1043 >> 2] = $1044 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($35);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 108:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($36, 13353);
     $1047 = $db + 4 | 0;
     $1048 = HEAP32[$1047 >> 2] | 0;
     $1050 = HEAP32[$db + 8 >> 2] | 0;
     if ($1048 >>> 0 < $1050 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1048, $36);
      HEAP32[$1047 >> 2] = (HEAP32[$1047 >> 2] | 0) + 24;
     } else {
      $1057 = HEAP32[$db >> 2] | 0;
      $1058 = $1048 - $1057 | 0;
      $1059 = ($1058 | 0) / 24 | 0;
      $1060 = $1059 + 1 | 0;
      if (($1058 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1064 = ($1050 - $1057 | 0) / 24 | 0;
      if ($1064 >>> 0 < 1073741823) {
       $1066 = $1064 << 1;
       $$0$i$i$i180 = $1066 >>> 0 < $1060 >>> 0 ? $1060 : $1066;
      } else $$0$i$i$i180 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i180, $1059, $db + 12 | 0);
      $1069 = $__v$i$i224 + 8 | 0;
      $1070 = HEAP32[$1069 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1070, $36);
      HEAP32[$1069 >> 2] = $1070 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($36);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 76:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($37, 13363);
     $1073 = $db + 4 | 0;
     $1074 = HEAP32[$1073 >> 2] | 0;
     $1076 = HEAP32[$db + 8 >> 2] | 0;
     if ($1074 >>> 0 < $1076 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1074, $37);
      HEAP32[$1073 >> 2] = (HEAP32[$1073 >> 2] | 0) + 24;
     } else {
      $1083 = HEAP32[$db >> 2] | 0;
      $1084 = $1074 - $1083 | 0;
      $1085 = ($1084 | 0) / 24 | 0;
      $1086 = $1085 + 1 | 0;
      if (($1084 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1090 = ($1076 - $1083 | 0) / 24 | 0;
      if ($1090 >>> 0 < 1073741823) {
       $1092 = $1090 << 1;
       $$0$i$i$i185 = $1092 >>> 0 < $1086 >>> 0 ? $1086 : $1092;
      } else $$0$i$i$i185 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i185, $1085, $db + 12 | 0);
      $1095 = $__v$i$i224 + 8 | 0;
      $1096 = HEAP32[$1095 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1096, $37);
      HEAP32[$1095 >> 2] = $1096 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($37);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 112:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($38, 13374);
     $1099 = $db + 4 | 0;
     $1100 = HEAP32[$1099 >> 2] | 0;
     $1102 = HEAP32[$db + 8 >> 2] | 0;
     if ($1100 >>> 0 < $1102 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1100, $38);
      HEAP32[$1099 >> 2] = (HEAP32[$1099 >> 2] | 0) + 24;
     } else {
      $1109 = HEAP32[$db >> 2] | 0;
      $1110 = $1100 - $1109 | 0;
      $1111 = ($1110 | 0) / 24 | 0;
      $1112 = $1111 + 1 | 0;
      if (($1110 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1116 = ($1102 - $1109 | 0) / 24 | 0;
      if ($1116 >>> 0 < 1073741823) {
       $1118 = $1116 << 1;
       $$0$i$i$i190 = $1118 >>> 0 < $1112 >>> 0 ? $1112 : $1118;
      } else $$0$i$i$i190 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i190, $1111, $db + 12 | 0);
      $1121 = $__v$i$i224 + 8 | 0;
      $1122 = HEAP32[$1121 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1122, $38);
      HEAP32[$1121 >> 2] = $1122 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($38);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 115:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($39, 13353);
     $1125 = $db + 4 | 0;
     $1126 = HEAP32[$1125 >> 2] | 0;
     $1128 = HEAP32[$db + 8 >> 2] | 0;
     if ($1126 >>> 0 < $1128 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1126, $39);
      HEAP32[$1125 >> 2] = (HEAP32[$1125 >> 2] | 0) + 24;
     } else {
      $1135 = HEAP32[$db >> 2] | 0;
      $1136 = $1126 - $1135 | 0;
      $1137 = ($1136 | 0) / 24 | 0;
      $1138 = $1137 + 1 | 0;
      if (($1136 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1142 = ($1128 - $1135 | 0) / 24 | 0;
      if ($1142 >>> 0 < 1073741823) {
       $1144 = $1142 << 1;
       $$0$i$i$i195 = $1144 >>> 0 < $1138 >>> 0 ? $1138 : $1144;
      } else $$0$i$i$i195 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i195, $1137, $db + 12 | 0);
      $1147 = $__v$i$i224 + 8 | 0;
      $1148 = HEAP32[$1147 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1148, $39);
      HEAP32[$1147 >> 2] = $1148 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($39);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 116:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($40, 13385);
     $1151 = $db + 4 | 0;
     $1152 = HEAP32[$1151 >> 2] | 0;
     $1154 = HEAP32[$db + 8 >> 2] | 0;
     if ($1152 >>> 0 < $1154 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1152, $40);
      HEAP32[$1151 >> 2] = (HEAP32[$1151 >> 2] | 0) + 24;
     } else {
      $1161 = HEAP32[$db >> 2] | 0;
      $1162 = $1152 - $1161 | 0;
      $1163 = ($1162 | 0) / 24 | 0;
      $1164 = $1163 + 1 | 0;
      if (($1162 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1168 = ($1154 - $1161 | 0) / 24 | 0;
      if ($1168 >>> 0 < 1073741823) {
       $1170 = $1168 << 1;
       $$0$i$i$i200 = $1170 >>> 0 < $1164 >>> 0 ? $1164 : $1170;
      } else $$0$i$i$i200 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i200, $1163, $db + 12 | 0);
      $1173 = $__v$i$i224 + 8 | 0;
      $1174 = HEAP32[$1173 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1174, $40);
      HEAP32[$1173 >> 2] = $1174 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($40);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 113:
  {
   if ((HEAP8[$first + 1 >> 0] | 0) != 117) {
    $$0 = $first;
    break L1;
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($41, 13396);
   $1180 = $db + 4 | 0;
   $1181 = HEAP32[$1180 >> 2] | 0;
   $1183 = HEAP32[$db + 8 >> 2] | 0;
   if ($1181 >>> 0 < $1183 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1181, $41);
    HEAP32[$1180 >> 2] = (HEAP32[$1180 >> 2] | 0) + 24;
   } else {
    $1190 = HEAP32[$db >> 2] | 0;
    $1191 = $1181 - $1190 | 0;
    $1192 = ($1191 | 0) / 24 | 0;
    $1193 = $1192 + 1 | 0;
    if (($1191 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $1197 = ($1183 - $1190 | 0) / 24 | 0;
    if ($1197 >>> 0 < 1073741823) {
     $1199 = $1197 << 1;
     $$0$i$i$i205 = $1199 >>> 0 < $1193 >>> 0 ? $1193 : $1199;
    } else $$0$i$i$i205 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i205, $1192, $db + 12 | 0);
    $1202 = $__v$i$i224 + 8 | 0;
    $1203 = HEAP32[$1202 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1203, $41);
    HEAP32[$1202 >> 2] = $1203 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($41);
   $$0 = $first + 2 | 0;
   break L1;
   break;
  }
 case 114:
  {
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 109:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($42, 13406);
     $1209 = $db + 4 | 0;
     $1210 = HEAP32[$1209 >> 2] | 0;
     $1212 = HEAP32[$db + 8 >> 2] | 0;
     if ($1210 >>> 0 < $1212 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1210, $42);
      HEAP32[$1209 >> 2] = (HEAP32[$1209 >> 2] | 0) + 24;
     } else {
      $1219 = HEAP32[$db >> 2] | 0;
      $1220 = $1210 - $1219 | 0;
      $1221 = ($1220 | 0) / 24 | 0;
      $1222 = $1221 + 1 | 0;
      if (($1220 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1226 = ($1212 - $1219 | 0) / 24 | 0;
      if ($1226 >>> 0 < 1073741823) {
       $1228 = $1226 << 1;
       $$0$i$i$i210 = $1228 >>> 0 < $1222 >>> 0 ? $1222 : $1228;
      } else $$0$i$i$i210 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i210, $1221, $db + 12 | 0);
      $1231 = $__v$i$i224 + 8 | 0;
      $1232 = HEAP32[$1231 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1232, $42);
      HEAP32[$1231 >> 2] = $1232 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($42);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 77:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($43, 13416);
     $1235 = $db + 4 | 0;
     $1236 = HEAP32[$1235 >> 2] | 0;
     $1238 = HEAP32[$db + 8 >> 2] | 0;
     if ($1236 >>> 0 < $1238 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1236, $43);
      HEAP32[$1235 >> 2] = (HEAP32[$1235 >> 2] | 0) + 24;
     } else {
      $1245 = HEAP32[$db >> 2] | 0;
      $1246 = $1236 - $1245 | 0;
      $1247 = ($1246 | 0) / 24 | 0;
      $1248 = $1247 + 1 | 0;
      if (($1246 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1252 = ($1238 - $1245 | 0) / 24 | 0;
      if ($1252 >>> 0 < 1073741823) {
       $1254 = $1252 << 1;
       $$0$i$i$i215 = $1254 >>> 0 < $1248 >>> 0 ? $1248 : $1254;
      } else $$0$i$i$i215 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i215, $1247, $db + 12 | 0);
      $1257 = $__v$i$i224 + 8 | 0;
      $1258 = HEAP32[$1257 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1258, $43);
      HEAP32[$1257 >> 2] = $1258 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($43);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 115:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($44, 13427);
     $1261 = $db + 4 | 0;
     $1262 = HEAP32[$1261 >> 2] | 0;
     $1264 = HEAP32[$db + 8 >> 2] | 0;
     if ($1262 >>> 0 < $1264 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1262, $44);
      HEAP32[$1261 >> 2] = (HEAP32[$1261 >> 2] | 0) + 24;
     } else {
      $1271 = HEAP32[$db >> 2] | 0;
      $1272 = $1262 - $1271 | 0;
      $1273 = ($1272 | 0) / 24 | 0;
      $1274 = $1273 + 1 | 0;
      if (($1272 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1278 = ($1264 - $1271 | 0) / 24 | 0;
      if ($1278 >>> 0 < 1073741823) {
       $1280 = $1278 << 1;
       $$0$i$i$i220 = $1280 >>> 0 < $1274 >>> 0 ? $1274 : $1280;
      } else $$0$i$i$i220 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i220, $1273, $db + 12 | 0);
      $1283 = $__v$i$i224 + 8 | 0;
      $1284 = HEAP32[$1283 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1284, $44);
      HEAP32[$1283 >> 2] = $1284 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($44);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 83:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($45, 13438);
     $1287 = $db + 4 | 0;
     $1288 = HEAP32[$1287 >> 2] | 0;
     $1290 = HEAP32[$db + 8 >> 2] | 0;
     if ($1288 >>> 0 < $1290 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1288, $45);
      HEAP32[$1287 >> 2] = (HEAP32[$1287 >> 2] | 0) + 24;
     } else {
      $1297 = HEAP32[$db >> 2] | 0;
      $1298 = $1288 - $1297 | 0;
      $1299 = ($1298 | 0) / 24 | 0;
      $1300 = $1299 + 1 | 0;
      if (($1298 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $1304 = ($1290 - $1297 | 0) / 24 | 0;
      if ($1304 >>> 0 < 1073741823) {
       $1306 = $1304 << 1;
       $$0$i$i$i225 = $1306 >>> 0 < $1300 >>> 0 ? $1300 : $1306;
      } else $$0$i$i$i225 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i224, $$0$i$i$i225, $1299, $db + 12 | 0);
      $1309 = $__v$i$i224 + 8 | 0;
      $1310 = HEAP32[$1309 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($1310, $45);
      HEAP32[$1309 >> 2] = $1310 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i224);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i224);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 case 118:
  {
   if (((HEAP8[$first + 1 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
    $$0 = $first;
    break L1;
   }
   $1316 = $first + 2 | 0;
   $1317 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($1316, $last, $db) | 0;
   if (($1317 | 0) == ($1316 | 0)) {
    $$0 = $first;
    break L1;
   }
   $1321 = HEAP32[$db + 4 >> 2] | 0;
   if ((HEAP32[$db >> 2] | 0) == ($1321 | 0)) {
    $$0 = $first;
    break L1;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($1321 + -24 | 0, 0, 13022) | 0;
   $$0 = $1317;
   break L1;
   break;
  }
 default:
  {
   $$0 = $first;
   break L1;
  }
 } while (0); else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}
function _arPattGetImage2($imageProcMode, $pattDetectMode, $patt_size, $sample_size, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) {
 $imageProcMode = $imageProcMode | 0;
 $pattDetectMode = $pattDetectMode | 0;
 $patt_size = $patt_size | 0;
 $sample_size = $sample_size | 0;
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $pixelFormat = $pixelFormat | 0;
 $paramLTf = $paramLTf | 0;
 $vertex = $vertex | 0;
 $pattRatio = +$pattRatio;
 $ext_patt = $ext_patt | 0;
 var $$0 = 0, $100 = 0, $1001 = 0, $1005 = 0, $1009 = 0, $1012 = 0, $1023 = 0.0, $1028 = 0.0, $103 = 0.0, $1035 = 0.0, $104 = 0.0, $1045 = 0.0, $1054 = 0.0, $1055 = 0.0, $106 = 0, $107 = 0, $1074 = 0, $108 = 0, $1084 = 0, $1090 = 0.0, $1096 = 0.0, $1097 = 0.0, $110 = 0.0, $1101 = 0, $1107 = 0, $111 = 0.0, $1111 = 0, $1113 = 0, $1119 = 0, $112 = 0.0, $1120 = 0, $1124 = 0, $1128 = 0, $113 = 0, $1132 = 0, $1135 = 0, $114 = 0, $1146 = 0.0, $115 = 0, $1151 = 0.0, $1158 = 0.0, $116 = 0, $1168 = 0.0, $117 = 0, $1177 = 0.0, $1178 = 0.0, $118 = 0, $119 = 0, $1199 = 0, $120 = 0, $1203 = 0, $121 = 0, $1211 = 0, $1212 = 0, $1217 = 0, $1225 = 0, $123 = 0, $1231 = 0, $124 = 0.0, $1242 = 0.0, $1247 = 0.0, $125 = 0.0, $1254 = 0.0, $126 = 0.0, $1264 = 0.0, $127 = 0, $1273 = 0.0, $1274 = 0.0, $128 = 0, $129 = 0, $1295 = 0, $1299 = 0, $130 = 0, $1307 = 0, $1308 = 0, $131 = 0, $1313 = 0, $132 = 0, $1321 = 0, $1327 = 0, $133 = 0, $1338 = 0.0, $134 = 0, $1343 = 0.0, $135 = 0, $1350 = 0.0, $1360 = 0.0, $1369 = 0.0, $137 = 0, $1370 = 0.0, $138 = 0.0, $139 = 0.0, $1391 = 0, $140 = 0.0, $1402 = 0, $1403 = 0, $1408 = 0, $141 = 0, $1413 = 0, $1419 = 0, $142 = 0, $143 = 0, $1433 = 0, $1436 = 0.0, $1437 = 0.0, $1438 = 0.0, $1439 = 0, $144 = 0, $1440 = 0, $1441 = 0, $1442 = 0, $1443 = 0, $1444 = 0, $1445 = 0, $1446 = 0, $1447 = 0, $1449 = 0, $145 = 0, $1450 = 0, $1456 = 0.0, $146 = 0, $1461 = 0.0, $1468 = 0.0, $147 = 0, $1478 = 0.0, $148 = 0, $1487 = 0.0, $1488 = 0.0, $149 = 0, $1509 = 0, $151 = 0, $152 = 0.0, $1528 = 0, $153 = 0.0, $1537 = 0.0, $1538 = 0.0, $1539 = 0.0, $154 = 0.0, $1540 = 0, $1541 = 0, $1542 = 0, $1543 = 0, $1544 = 0, $1545 = 0, $1546 = 0, $1547 = 0, $1548 = 0, $155 = 0, $1550 = 0, $1555 = 0.0, $156 = 0, $1560 = 0.0, $1567 = 0.0, $157 = 0, $1577 = 0.0, $158 = 0, $1586 = 0.0, $1587 = 0.0, $159 = 0, $160 = 0, $1608 = 0, $161 = 0, $162 = 0, $1627 = 0, $163 = 0, $1636 = 0.0, $1637 = 0.0, $1638 = 0.0, $1639 = 0, $1640 = 0, $1641 = 0, $1642 = 0, $1643 = 0, $1644 = 0, $1645 = 0, $1646 = 0, $1647 = 0, $1649 = 0, $165 = 0, $1654 = 0.0, $1659 = 0.0, $166 = 0.0, $1666 = 0.0, $167 = 0.0, $1676 = 0.0, $168 = 0.0, $1685 = 0.0, $1686 = 0.0, $169 = 0, $170 = 0, $1707 = 0, $171 = 0, $172 = 0, $1727 = 0, $173 = 0, $1734 = 0.0, $1735 = 0.0, $1736 = 0.0, $1737 = 0, $1738 = 0, $1739 = 0, $174 = 0, $1740 = 0, $1741 = 0, $1742 = 0, $1743 = 0, $1744 = 0, $1745 = 0, $1747 = 0, $1748 = 0.0, $1749 = 0.0, $175 = 0, $1750 = 0.0, $1751 = 0, $1752 = 0, $1753 = 0, $1754 = 0, $1755 = 0, $1756 = 0, $1757 = 0, $1758 = 0, $1759 = 0, $176 = 0, $1761 = 0, $1762 = 0.0, $1763 = 0.0, $1764 = 0.0, $1765 = 0, $1766 = 0, $1767 = 0, $1768 = 0, $1769 = 0, $177 = 0, $1770 = 0, $1771 = 0, $1772 = 0, $1773 = 0, $1775 = 0, $1776 = 0.0, $1777 = 0.0, $1778 = 0.0, $1779 = 0, $1780 = 0, $1781 = 0, $1782 = 0, $1783 = 0, $1784 = 0, $1785 = 0, $1786 = 0, $1787 = 0, $1789 = 0, $179 = 0, $1790 = 0.0, $1791 = 0.0, $1792 = 0.0, $1793 = 0, $1794 = 0, $1795 = 0, $1796 = 0, $1797 = 0, $1798 = 0, $1799 = 0, $180 = 0.0, $1800 = 0, $1801 = 0, $1803 = 0, $1804 = 0.0, $1805 = 0.0, $1806 = 0.0, $1807 = 0, $1808 = 0, $1809 = 0, $181 = 0.0, $1810 = 0, $1811 = 0, $1812 = 0, $1813 = 0, $1814 = 0, $1815 = 0, $1817 = 0, $182 = 0.0, $1822 = 0.0, $1827 = 0.0, $183 = 0, $1834 = 0.0, $184 = 0, $1844 = 0.0, $185 = 0, $1853 = 0.0, $1854 = 0.0, $186 = 0, $187 = 0, $1875 = 0, $188 = 0, $1882 = 0, $189 = 0, $1893 = 0.0, $1898 = 0.0, $190 = 0, $1905 = 0.0, $191 = 0, $1915 = 0.0, $1924 = 0.0, $1925 = 0.0, $193 = 0, $194 = 0.0, $1948 = 0, $195 = 0.0, $1955 = 0, $196 = 0.0, $1966 = 0.0, $197 = 0, $1971 = 0.0, $1978 = 0.0, $198 = 0, $1988 = 0.0, $199 = 0, $1997 = 0.0, $1998 = 0.0, $200 = 0, $201 = 0, $202 = 0, $2020 = 0, $2027 = 0, $203 = 0, $2038 = 0.0, $204 = 0, $2043 = 0.0, $205 = 0, $2050 = 0.0, $2060 = 0.0, $2069 = 0.0, $207 = 0, $2070 = 0.0, $208 = 0.0, $209 = 0.0, $2091 = 0, $2094 = 0, $210 = 0.0, $2102 = 0, $211 = 0, $2117 = 0, $212 = 0, $2128 = 0.0, $213 = 0, $2133 = 0.0, $214 = 0, $2140 = 0.0, $215 = 0, $2150 = 0.0, $2159 = 0.0, $216 = 0, $2160 = 0.0, $217 = 0, $218 = 0, $2181 = 0, $2184 = 0, $219 = 0, $2192 = 0, $2207 = 0, $221 = 0, $2218 = 0.0, $222 = 0.0, $2223 = 0.0, $223 = 0.0, $2230 = 0.0, $224 = 0.0, $2240 = 0.0, $2249 = 0.0, $225 = 0, $2250 = 0.0, $226 = 0, $227 = 0, $2271 = 0, $2274 = 0, $228 = 0, $229 = 0, $2293 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $235 = 0, $236 = 0.0, $237 = 0.0, $238 = 0.0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $250 = 0.0, $251 = 0.0, $252 = 0.0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $260 = 0, $261 = 0, $263 = 0, $264 = 0.0, $265 = 0.0, $266 = 0.0, $267 = 0, $268 = 0, $269 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $278 = 0, $284 = 0.0, $289 = 0.0, $29 = 0.0, $296 = 0.0, $306 = 0.0, $31 = 0.0, $315 = 0.0, $316 = 0.0, $32 = 0.0, $337 = 0, $346 = 0, $347 = 0, $35 = 0.0, $355 = 0, $362 = 0, $37 = 0.0, $373 = 0.0, $378 = 0.0, $38 = 0.0, $385 = 0.0, $395 = 0.0, $404 = 0.0, $405 = 0.0, $41 = 0, $426 = 0, $43 = 0.0, $434 = 0, $435 = 0, $443 = 0, $45 = 0.0, $451 = 0, $46 = 0.0, $462 = 0.0, $467 = 0.0, $474 = 0.0, $484 = 0.0, $49 = 0.0, $493 = 0.0, $494 = 0.0, $51 = 0.0, $515 = 0, $52 = 0.0, $524 = 0, $525 = 0, $533 = 0, $540 = 0, $55 = 0, $551 = 0.0, $556 = 0.0, $56 = 0.0, $563 = 0.0, $573 = 0.0, $58 = 0.0, $582 = 0.0, $583 = 0.0, $604 = 0, $61 = 0, $612 = 0, $613 = 0, $62 = 0.0, $621 = 0, $629 = 0, $64 = 0.0, $640 = 0.0, $645 = 0.0, $652 = 0.0, $662 = 0.0, $67 = 0, $671 = 0.0, $672 = 0.0, $693 = 0, $702 = 0, $703 = 0, $711 = 0, $719 = 0, $73 = 0, $730 = 0.0, $735 = 0.0, $742 = 0.0, $752 = 0.0, $761 = 0.0, $762 = 0.0, $77 = 0, $783 = 0, $785 = 0, $790 = 0, $791 = 0, $795 = 0, $799 = 0, $810 = 0.0, $815 = 0.0, $822 = 0.0, $832 = 0.0, $841 = 0.0, $842 = 0.0, $863 = 0, $872 = 0, $873 = 0, $881 = 0, $889 = 0, $900 = 0.0, $905 = 0.0, $912 = 0.0, $922 = 0.0, $931 = 0.0, $932 = 0.0, $951 = 0, $954 = 0, $959 = 0.0, $973 = 0.0, $974 = 0.0, $978 = 0, $984 = 0, $988 = 0, $99 = 0, $990 = 0, $996 = 0, $997 = 0, $ext_patt2$0 = 0, $i$10291 = 0, $i$11297 = 0, $i$12303 = 0, $i$1237 = 0, $i$13236 = 0, $i$14312 = 0, $i$15318 = 0, $i$16324 = 0, $i$17330 = 0, $i$18336 = 0, $i$19342 = 0, $i$20348 = 0, $i$21354 = 0, $i$22360 = 0, $i$2243 = 0, $i$23309 = 0, $i$3249 = 0, $i$4255 = 0, $i$5261 = 0, $i$6267 = 0, $i$7273 = 0, $i$8279 = 0, $i$9285 = 0, $j$0241 = 0, $j$10301 = 0, $j$11307 = 0, $j$12316 = 0, $j$1247 = 0, $j$13322 = 0, $j$14328 = 0, $j$15334 = 0, $j$16340 = 0, $j$17346 = 0, $j$18352 = 0, $j$19358 = 0, $j$20364 = 0, $j$2253 = 0, $j$3259 = 0, $j$4265 = 0, $j$5271 = 0, $j$6277 = 0, $j$7283 = 0, $j$8289 = 0, $j$9295 = 0, $local = 0, $para = 0, $sample_size$xdiv2$2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $world = 0, $xc$0 = 0, $xc$1 = 0, $xc$10 = 0, $xc$11 = 0, $xc$12 = 0, $xc$13 = 0, $xc$14 = 0, $xc$15 = 0, $xc$16 = 0, $xc$17 = 0, $xc$18 = 0, $xc$19 = 0, $xc$2 = 0, $xc$20 = 0, $xc$3 = 0, $xc$4 = 0, $xc$5 = 0, $xc$6 = 0, $xc$7 = 0, $xc$8 = 0, $xc$9 = 0, $xc2 = 0, $xdiv2$0 = 0, $xdiv2$0$lcssa = 0, $xdiv2$1 = 0, $xdiv2$1$lcssa = 0, $xdiv2$2 = 0, $yc$0 = 0, $yc$1 = 0, $yc$10 = 0, $yc$11 = 0, $yc$12 = 0, $yc$13 = 0, $yc$14 = 0, $yc$15 = 0, $yc$16 = 0, $yc$17 = 0, $yc$18 = 0, $yc$19 = 0, $yc$2 = 0, $yc$20 = 0, $yc$3 = 0, $yc$4 = 0, $yc$5 = 0, $yc$6 = 0, $yc$7 = 0, $yc$8 = 0, $yc$9 = 0, $yc2 = 0, $ydiv2$0 = 0, $ydiv2$1 = 0, $ydiv2$2 = 0, $ydiv2$3 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer5 = sp + 224 | 0;
 $vararg_buffer3 = sp + 216 | 0;
 $vararg_buffer1 = sp + 208 | 0;
 $vararg_buffer = sp + 200 | 0;
 $world = sp + 136 | 0;
 $local = sp + 72 | 0;
 $para = sp;
 $xc2 = sp + 232 | 0;
 $yc2 = sp + 228 | 0;
 HEAPF64[$world >> 3] = 100.0;
 HEAPF64[$world + 8 >> 3] = 100.0;
 HEAPF64[$world + 16 >> 3] = 110.0;
 HEAPF64[$world + 24 >> 3] = 100.0;
 HEAPF64[$world + 32 >> 3] = 110.0;
 HEAPF64[$world + 40 >> 3] = 110.0;
 HEAPF64[$world + 48 >> 3] = 100.0;
 HEAPF64[$world + 56 >> 3] = 110.0;
 HEAPF64[$local >> 3] = +HEAPF64[$vertex >> 3];
 HEAPF64[$local + 8 >> 3] = +HEAPF64[$vertex + 8 >> 3];
 HEAPF64[$local + 16 >> 3] = +HEAPF64[$vertex + 16 >> 3];
 HEAPF64[$local + 24 >> 3] = +HEAPF64[$vertex + 24 >> 3];
 HEAPF64[$local + 32 >> 3] = +HEAPF64[$vertex + 32 >> 3];
 HEAPF64[$local + 40 >> 3] = +HEAPF64[$vertex + 40 >> 3];
 HEAPF64[$local + 48 >> 3] = +HEAPF64[$vertex + 48 >> 3];
 HEAPF64[$local + 56 >> 3] = +HEAPF64[$vertex + 56 >> 3];
 _get_cpara($world, $local, $para);
 $29 = +HEAPF64[$local >> 3];
 $31 = +HEAPF64[$local + 16 >> 3];
 $32 = $29 - $31;
 $35 = +HEAPF64[$local + 8 >> 3];
 $37 = +HEAPF64[$local + 24 >> 3];
 $38 = $35 - $37;
 $41 = ~~($32 * $32 + $38 * $38);
 $43 = +HEAPF64[$local + 32 >> 3];
 $45 = +HEAPF64[$local + 48 >> 3];
 $46 = $43 - $45;
 $49 = +HEAPF64[$local + 40 >> 3];
 $51 = +HEAPF64[$local + 56 >> 3];
 $52 = $49 - $51;
 $55 = ~~($46 * $46 + $52 * $52);
 $56 = $31 - $43;
 $58 = $37 - $49;
 $61 = ~~($56 * $56 + $58 * $58);
 $62 = $45 - $29;
 $64 = $51 - $35;
 $67 = ~~($62 * $62 + $64 * $64);
 $73 = ~~(+((($55 | 0) > ($41 | 0) ? $55 : $41) | 0) * $pattRatio * $pattRatio);
 $77 = ~~(+((($67 | 0) > ($61 | 0) ? $67 : $61) | 0) * $pattRatio * $pattRatio);
 if (!$imageProcMode) {
  $xdiv2$0 = $patt_size;
  while (1) if (($xdiv2$0 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$0, $xdiv2$0) | 0) < ($73 | 0)) $xdiv2$0 = $xdiv2$0 << 1; else {
   $xdiv2$0$lcssa = $xdiv2$0;
   break;
  }
  $ydiv2$0 = $patt_size;
  while (1) if (($ydiv2$0 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$0, $ydiv2$0) | 0) < ($77 | 0)) $ydiv2$0 = $ydiv2$0 << 1; else {
   $xdiv2$2 = $xdiv2$0$lcssa;
   $ydiv2$2 = $ydiv2$0;
   break;
  }
 } else {
  $xdiv2$1 = $patt_size;
  while (1) if (($xdiv2$1 | 0) < ($sample_size | 0) & (Math_imul($xdiv2$1 << 2, $xdiv2$1) | 0) < ($73 | 0)) $xdiv2$1 = $xdiv2$1 << 1; else {
   $xdiv2$1$lcssa = $xdiv2$1;
   break;
  }
  $ydiv2$1 = $patt_size;
  while (1) if (($ydiv2$1 | 0) < ($sample_size | 0) & (Math_imul($ydiv2$1 << 2, $ydiv2$1) | 0) < ($77 | 0)) $ydiv2$1 = $ydiv2$1 << 1; else {
   $xdiv2$2 = $xdiv2$1$lcssa;
   $ydiv2$2 = $ydiv2$1;
   break;
  }
 }
 $sample_size$xdiv2$2 = ($xdiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $xdiv2$2;
 $ydiv2$3 = ($ydiv2$2 | 0) > ($sample_size | 0) ? $sample_size : $ydiv2$2;
 $99 = ($sample_size$xdiv2$2 | 0) / ($patt_size | 0) | 0;
 $100 = ($ydiv2$3 | 0) / ($patt_size | 0) | 0;
 $103 = (1.0 - $pattRatio) * .5 * 10.0;
 $104 = $pattRatio * 10.0;
 $106 = Math_imul($patt_size, $patt_size) | 0;
 L13 : do if (!$pattDetectMode) {
  $107 = $106 * 3 | 0;
  $108 = _calloc($107, 4) | 0;
  if (!$108) {
   _arLog(3, 5471, $vararg_buffer);
   _exit(1);
  }
  do switch ($pixelFormat | 0) {
  case 0:
   {
    $264 = $103 + 100.0;
    $265 = +($ydiv2$3 | 0);
    $266 = +($sample_size$xdiv2$2 | 0);
    $267 = $para + 48 | 0;
    $268 = $para + 56 | 0;
    $269 = $para + 64 | 0;
    $270 = $para + 8 | 0;
    $271 = $para + 16 | 0;
    $272 = $para + 24 | 0;
    $273 = $para + 32 | 0;
    $274 = $para + 40 | 0;
    $275 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $277 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$0241 = 0;
     do {
      $284 = $264 + $104 * (+($j$0241 | 0) + .5) / $265;
      if ($277) {
       $i$1237 = 0;
       do {
        $289 = $264 + $104 * (+($i$1237 | 0) + .5) / $266;
        $296 = +HEAPF64[$269 >> 3] + (+HEAPF64[$267 >> 3] * $289 + $284 * +HEAPF64[$268 >> 3]);
        if ($296 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $306 = (+HEAPF64[$271 >> 3] + ($289 * +HEAPF64[$para >> 3] + $284 * +HEAPF64[$270 >> 3])) / $296;
        HEAPF32[$xc2 >> 2] = $306;
        $315 = (+HEAPF64[$274 >> 3] + ($289 * +HEAPF64[$272 >> 3] + $284 * +HEAPF64[$273 >> 3])) / $296;
        HEAPF32[$yc2 >> 2] = $315;
        _arParamIdeal2ObservLTf($paramLTf, $306, $315, $xc2, $yc2) | 0;
        $316 = +HEAPF32[$xc2 >> 2];
        if ($275) {
         $xc$0 = ((~~($316 + 1.0) | 0) / 2 | 0) << 1;
         $yc$0 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$0 = ~~($316 + .5);
         $yc$0 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$0 | 0) > -1) if (($yc$0 | 0) < ($ysize | 0) & (($yc$0 | 0) > -1 & ($xc$0 | 0) < ($xsize | 0))) {
         $337 = ((Math_imul($yc$0, $xsize) | 0) + $xc$0 | 0) * 3 | 0;
         $346 = ((Math_imul(($j$0241 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$1237 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $347 = $108 + ($346 << 2) | 0;
         HEAP32[$347 >> 2] = (HEAP32[$347 >> 2] | 0) + (HEAPU8[$image + ($337 + 2) >> 0] | 0);
         $355 = $108 + ($346 + 1 << 2) | 0;
         HEAP32[$355 >> 2] = (HEAP32[$355 >> 2] | 0) + (HEAPU8[$image + ($337 + 1) >> 0] | 0);
         $362 = $108 + ($346 + 2 << 2) | 0;
         HEAP32[$362 >> 2] = (HEAP32[$362 >> 2] | 0) + (HEAPU8[$image + $337 >> 0] | 0);
        }
        $i$1237 = $i$1237 + 1 | 0;
       } while (($i$1237 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$0241 = $j$0241 + 1 | 0;
     } while (($j$0241 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 1:
   {
    $250 = $103 + 100.0;
    $251 = +($ydiv2$3 | 0);
    $252 = +($sample_size$xdiv2$2 | 0);
    $253 = $para + 48 | 0;
    $254 = $para + 56 | 0;
    $255 = $para + 64 | 0;
    $256 = $para + 8 | 0;
    $257 = $para + 16 | 0;
    $258 = $para + 24 | 0;
    $259 = $para + 32 | 0;
    $260 = $para + 40 | 0;
    $261 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $263 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$1247 = 0;
     do {
      $373 = $250 + $104 * (+($j$1247 | 0) + .5) / $251;
      if ($263) {
       $i$2243 = 0;
       do {
        $378 = $250 + $104 * (+($i$2243 | 0) + .5) / $252;
        $385 = +HEAPF64[$255 >> 3] + (+HEAPF64[$253 >> 3] * $378 + $373 * +HEAPF64[$254 >> 3]);
        if ($385 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $395 = (+HEAPF64[$257 >> 3] + ($378 * +HEAPF64[$para >> 3] + $373 * +HEAPF64[$256 >> 3])) / $385;
        HEAPF32[$xc2 >> 2] = $395;
        $404 = (+HEAPF64[$260 >> 3] + ($378 * +HEAPF64[$258 >> 3] + $373 * +HEAPF64[$259 >> 3])) / $385;
        HEAPF32[$yc2 >> 2] = $404;
        _arParamIdeal2ObservLTf($paramLTf, $395, $404, $xc2, $yc2) | 0;
        $405 = +HEAPF32[$xc2 >> 2];
        if ($261) {
         $xc$1 = ((~~($405 + 1.0) | 0) / 2 | 0) << 1;
         $yc$1 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$1 = ~~($405 + .5);
         $yc$1 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$1 | 0) > -1) if (($yc$1 | 0) < ($ysize | 0) & (($yc$1 | 0) > -1 & ($xc$1 | 0) < ($xsize | 0))) {
         $426 = ((Math_imul($yc$1, $xsize) | 0) + $xc$1 | 0) * 3 | 0;
         $434 = ((Math_imul(($j$1247 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$2243 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $435 = $108 + ($434 << 2) | 0;
         HEAP32[$435 >> 2] = (HEAP32[$435 >> 2] | 0) + (HEAPU8[$image + $426 >> 0] | 0);
         $443 = $108 + ($434 + 1 << 2) | 0;
         HEAP32[$443 >> 2] = (HEAP32[$443 >> 2] | 0) + (HEAPU8[$image + ($426 + 1) >> 0] | 0);
         $451 = $108 + ($434 + 2 << 2) | 0;
         HEAP32[$451 >> 2] = (HEAP32[$451 >> 2] | 0) + (HEAPU8[$image + ($426 + 2) >> 0] | 0);
        }
        $i$2243 = $i$2243 + 1 | 0;
       } while (($i$2243 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$1247 = $j$1247 + 1 | 0;
     } while (($j$1247 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 2:
   {
    $236 = $103 + 100.0;
    $237 = +($ydiv2$3 | 0);
    $238 = +($sample_size$xdiv2$2 | 0);
    $239 = $para + 48 | 0;
    $240 = $para + 56 | 0;
    $241 = $para + 64 | 0;
    $242 = $para + 8 | 0;
    $243 = $para + 16 | 0;
    $244 = $para + 24 | 0;
    $245 = $para + 32 | 0;
    $246 = $para + 40 | 0;
    $247 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $249 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$2253 = 0;
     do {
      $462 = $236 + $104 * (+($j$2253 | 0) + .5) / $237;
      if ($249) {
       $i$3249 = 0;
       do {
        $467 = $236 + $104 * (+($i$3249 | 0) + .5) / $238;
        $474 = +HEAPF64[$241 >> 3] + (+HEAPF64[$239 >> 3] * $467 + $462 * +HEAPF64[$240 >> 3]);
        if ($474 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $484 = (+HEAPF64[$243 >> 3] + ($467 * +HEAPF64[$para >> 3] + $462 * +HEAPF64[$242 >> 3])) / $474;
        HEAPF32[$xc2 >> 2] = $484;
        $493 = (+HEAPF64[$246 >> 3] + ($467 * +HEAPF64[$244 >> 3] + $462 * +HEAPF64[$245 >> 3])) / $474;
        HEAPF32[$yc2 >> 2] = $493;
        _arParamIdeal2ObservLTf($paramLTf, $484, $493, $xc2, $yc2) | 0;
        $494 = +HEAPF32[$xc2 >> 2];
        if ($247) {
         $xc$2 = ((~~($494 + 1.0) | 0) / 2 | 0) << 1;
         $yc$2 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$2 = ~~($494 + .5);
         $yc$2 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$2 | 0) > -1) if (($yc$2 | 0) < ($ysize | 0) & (($yc$2 | 0) > -1 & ($xc$2 | 0) < ($xsize | 0))) {
         $515 = (Math_imul($yc$2, $xsize) | 0) + $xc$2 << 2;
         $524 = ((Math_imul(($j$2253 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$3249 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $525 = $108 + ($524 << 2) | 0;
         HEAP32[$525 >> 2] = (HEAP32[$525 >> 2] | 0) + (HEAPU8[$image + ($515 | 2) >> 0] | 0);
         $533 = $108 + ($524 + 1 << 2) | 0;
         HEAP32[$533 >> 2] = (HEAP32[$533 >> 2] | 0) + (HEAPU8[$image + ($515 | 1) >> 0] | 0);
         $540 = $108 + ($524 + 2 << 2) | 0;
         HEAP32[$540 >> 2] = (HEAP32[$540 >> 2] | 0) + (HEAPU8[$image + $515 >> 0] | 0);
        }
        $i$3249 = $i$3249 + 1 | 0;
       } while (($i$3249 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$2253 = $j$2253 + 1 | 0;
     } while (($j$2253 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 3:
   {
    $222 = $103 + 100.0;
    $223 = +($ydiv2$3 | 0);
    $224 = +($sample_size$xdiv2$2 | 0);
    $225 = $para + 48 | 0;
    $226 = $para + 56 | 0;
    $227 = $para + 64 | 0;
    $228 = $para + 8 | 0;
    $229 = $para + 16 | 0;
    $230 = $para + 24 | 0;
    $231 = $para + 32 | 0;
    $232 = $para + 40 | 0;
    $233 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $235 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$3259 = 0;
     do {
      $551 = $222 + $104 * (+($j$3259 | 0) + .5) / $223;
      if ($235) {
       $i$4255 = 0;
       do {
        $556 = $222 + $104 * (+($i$4255 | 0) + .5) / $224;
        $563 = +HEAPF64[$227 >> 3] + (+HEAPF64[$225 >> 3] * $556 + $551 * +HEAPF64[$226 >> 3]);
        if ($563 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $573 = (+HEAPF64[$229 >> 3] + ($556 * +HEAPF64[$para >> 3] + $551 * +HEAPF64[$228 >> 3])) / $563;
        HEAPF32[$xc2 >> 2] = $573;
        $582 = (+HEAPF64[$232 >> 3] + ($556 * +HEAPF64[$230 >> 3] + $551 * +HEAPF64[$231 >> 3])) / $563;
        HEAPF32[$yc2 >> 2] = $582;
        _arParamIdeal2ObservLTf($paramLTf, $573, $582, $xc2, $yc2) | 0;
        $583 = +HEAPF32[$xc2 >> 2];
        if ($233) {
         $xc$3 = ((~~($583 + 1.0) | 0) / 2 | 0) << 1;
         $yc$3 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$3 = ~~($583 + .5);
         $yc$3 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$3 | 0) > -1) if (($yc$3 | 0) < ($ysize | 0) & (($yc$3 | 0) > -1 & ($xc$3 | 0) < ($xsize | 0))) {
         $604 = (Math_imul($yc$3, $xsize) | 0) + $xc$3 << 2;
         $612 = ((Math_imul(($j$3259 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$4255 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $613 = $108 + ($612 << 2) | 0;
         HEAP32[$613 >> 2] = (HEAP32[$613 >> 2] | 0) + (HEAPU8[$image + $604 >> 0] | 0);
         $621 = $108 + ($612 + 1 << 2) | 0;
         HEAP32[$621 >> 2] = (HEAP32[$621 >> 2] | 0) + (HEAPU8[$image + ($604 | 1) >> 0] | 0);
         $629 = $108 + ($612 + 2 << 2) | 0;
         HEAP32[$629 >> 2] = (HEAP32[$629 >> 2] | 0) + (HEAPU8[$image + ($604 | 2) >> 0] | 0);
        }
        $i$4255 = $i$4255 + 1 | 0;
       } while (($i$4255 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$3259 = $j$3259 + 1 | 0;
     } while (($j$3259 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 4:
   {
    $208 = $103 + 100.0;
    $209 = +($ydiv2$3 | 0);
    $210 = +($sample_size$xdiv2$2 | 0);
    $211 = $para + 48 | 0;
    $212 = $para + 56 | 0;
    $213 = $para + 64 | 0;
    $214 = $para + 8 | 0;
    $215 = $para + 16 | 0;
    $216 = $para + 24 | 0;
    $217 = $para + 32 | 0;
    $218 = $para + 40 | 0;
    $219 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $221 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$4265 = 0;
     do {
      $640 = $208 + $104 * (+($j$4265 | 0) + .5) / $209;
      if ($221) {
       $i$5261 = 0;
       do {
        $645 = $208 + $104 * (+($i$5261 | 0) + .5) / $210;
        $652 = +HEAPF64[$213 >> 3] + (+HEAPF64[$211 >> 3] * $645 + $640 * +HEAPF64[$212 >> 3]);
        if ($652 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $662 = (+HEAPF64[$215 >> 3] + ($645 * +HEAPF64[$para >> 3] + $640 * +HEAPF64[$214 >> 3])) / $652;
        HEAPF32[$xc2 >> 2] = $662;
        $671 = (+HEAPF64[$218 >> 3] + ($645 * +HEAPF64[$216 >> 3] + $640 * +HEAPF64[$217 >> 3])) / $652;
        HEAPF32[$yc2 >> 2] = $671;
        _arParamIdeal2ObservLTf($paramLTf, $662, $671, $xc2, $yc2) | 0;
        $672 = +HEAPF32[$xc2 >> 2];
        if ($219) {
         $xc$4 = ((~~($672 + 1.0) | 0) / 2 | 0) << 1;
         $yc$4 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$4 = ~~($672 + .5);
         $yc$4 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$4 | 0) > -1) if (($yc$4 | 0) < ($ysize | 0) & (($yc$4 | 0) > -1 & ($xc$4 | 0) < ($xsize | 0))) {
         $693 = (Math_imul($yc$4, $xsize) | 0) + $xc$4 << 2;
         $702 = ((Math_imul(($j$4265 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$5261 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $703 = $108 + ($702 << 2) | 0;
         HEAP32[$703 >> 2] = (HEAP32[$703 >> 2] | 0) + (HEAPU8[$image + ($693 | 1) >> 0] | 0);
         $711 = $108 + ($702 + 1 << 2) | 0;
         HEAP32[$711 >> 2] = (HEAP32[$711 >> 2] | 0) + (HEAPU8[$image + ($693 | 2) >> 0] | 0);
         $719 = $108 + ($702 + 2 << 2) | 0;
         HEAP32[$719 >> 2] = (HEAP32[$719 >> 2] | 0) + (HEAPU8[$image + ($693 | 3) >> 0] | 0);
        }
        $i$5261 = $i$5261 + 1 | 0;
       } while (($i$5261 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$4265 = $j$4265 + 1 | 0;
     } while (($j$4265 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 5:
  case 12:
  case 13:
  case 14:
   {
    $194 = $103 + 100.0;
    $195 = +($ydiv2$3 | 0);
    $196 = +($sample_size$xdiv2$2 | 0);
    $197 = $para + 48 | 0;
    $198 = $para + 56 | 0;
    $199 = $para + 64 | 0;
    $200 = $para + 8 | 0;
    $201 = $para + 16 | 0;
    $202 = $para + 24 | 0;
    $203 = $para + 32 | 0;
    $204 = $para + 40 | 0;
    $205 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $207 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$5271 = 0;
     do {
      $730 = $194 + $104 * (+($j$5271 | 0) + .5) / $195;
      if ($207) {
       $i$6267 = 0;
       do {
        $735 = $194 + $104 * (+($i$6267 | 0) + .5) / $196;
        $742 = +HEAPF64[$199 >> 3] + (+HEAPF64[$197 >> 3] * $735 + $730 * +HEAPF64[$198 >> 3]);
        if ($742 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $752 = (+HEAPF64[$201 >> 3] + ($735 * +HEAPF64[$para >> 3] + $730 * +HEAPF64[$200 >> 3])) / $742;
        HEAPF32[$xc2 >> 2] = $752;
        $761 = (+HEAPF64[$204 >> 3] + ($735 * +HEAPF64[$202 >> 3] + $730 * +HEAPF64[$203 >> 3])) / $742;
        HEAPF32[$yc2 >> 2] = $761;
        _arParamIdeal2ObservLTf($paramLTf, $752, $761, $xc2, $yc2) | 0;
        $762 = +HEAPF32[$xc2 >> 2];
        if ($205) {
         $xc$5 = ((~~($762 + 1.0) | 0) / 2 | 0) << 1;
         $yc$5 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$5 = ~~($762 + .5);
         $yc$5 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$5 | 0) > -1) if (($yc$5 | 0) < ($ysize | 0) & (($yc$5 | 0) > -1 & ($xc$5 | 0) < ($xsize | 0))) {
         $783 = $image + ((Math_imul($yc$5, $xsize) | 0) + $xc$5) | 0;
         $785 = HEAPU8[$783 >> 0] | 0;
         $790 = ((Math_imul(($j$5271 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$6267 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $791 = $108 + ($790 << 2) | 0;
         HEAP32[$791 >> 2] = (HEAP32[$791 >> 2] | 0) + $785;
         $795 = $108 + ($790 + 1 << 2) | 0;
         HEAP32[$795 >> 2] = (HEAP32[$795 >> 2] | 0) + $785;
         $799 = $108 + ($790 + 2 << 2) | 0;
         HEAP32[$799 >> 2] = (HEAP32[$799 >> 2] | 0) + $785;
        }
        $i$6267 = $i$6267 + 1 | 0;
       } while (($i$6267 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$5271 = $j$5271 + 1 | 0;
     } while (($j$5271 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 6:
   {
    $180 = $103 + 100.0;
    $181 = +($ydiv2$3 | 0);
    $182 = +($sample_size$xdiv2$2 | 0);
    $183 = $para + 48 | 0;
    $184 = $para + 56 | 0;
    $185 = $para + 64 | 0;
    $186 = $para + 8 | 0;
    $187 = $para + 16 | 0;
    $188 = $para + 24 | 0;
    $189 = $para + 32 | 0;
    $190 = $para + 40 | 0;
    $191 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $193 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$6277 = 0;
     do {
      $810 = $180 + $104 * (+($j$6277 | 0) + .5) / $181;
      if ($193) {
       $i$7273 = 0;
       do {
        $815 = $180 + $104 * (+($i$7273 | 0) + .5) / $182;
        $822 = +HEAPF64[$185 >> 3] + (+HEAPF64[$183 >> 3] * $815 + $810 * +HEAPF64[$184 >> 3]);
        if ($822 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $832 = (+HEAPF64[$187 >> 3] + ($815 * +HEAPF64[$para >> 3] + $810 * +HEAPF64[$186 >> 3])) / $822;
        HEAPF32[$xc2 >> 2] = $832;
        $841 = (+HEAPF64[$190 >> 3] + ($815 * +HEAPF64[$188 >> 3] + $810 * +HEAPF64[$189 >> 3])) / $822;
        HEAPF32[$yc2 >> 2] = $841;
        _arParamIdeal2ObservLTf($paramLTf, $832, $841, $xc2, $yc2) | 0;
        $842 = +HEAPF32[$xc2 >> 2];
        if ($191) {
         $xc$6 = ((~~($842 + 1.0) | 0) / 2 | 0) << 1;
         $yc$6 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$6 = ~~($842 + .5);
         $yc$6 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$6 | 0) > -1) if (($yc$6 | 0) < ($ysize | 0) & (($yc$6 | 0) > -1 & ($xc$6 | 0) < ($xsize | 0))) {
         $863 = (Math_imul($yc$6, $xsize) | 0) + $xc$6 << 2;
         $872 = ((Math_imul(($j$6277 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$7273 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $873 = $108 + ($872 << 2) | 0;
         HEAP32[$873 >> 2] = (HEAP32[$873 >> 2] | 0) + (HEAPU8[$image + ($863 | 3) >> 0] | 0);
         $881 = $108 + ($872 + 1 << 2) | 0;
         HEAP32[$881 >> 2] = (HEAP32[$881 >> 2] | 0) + (HEAPU8[$image + ($863 | 2) >> 0] | 0);
         $889 = $108 + ($872 + 2 << 2) | 0;
         HEAP32[$889 >> 2] = (HEAP32[$889 >> 2] | 0) + (HEAPU8[$image + ($863 | 1) >> 0] | 0);
        }
        $i$7273 = $i$7273 + 1 | 0;
       } while (($i$7273 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$6277 = $j$6277 + 1 | 0;
     } while (($j$6277 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 7:
   {
    $166 = $103 + 100.0;
    $167 = +($ydiv2$3 | 0);
    $168 = +($sample_size$xdiv2$2 | 0);
    $169 = $para + 48 | 0;
    $170 = $para + 56 | 0;
    $171 = $para + 64 | 0;
    $172 = $para + 8 | 0;
    $173 = $para + 16 | 0;
    $174 = $para + 24 | 0;
    $175 = $para + 32 | 0;
    $176 = $para + 40 | 0;
    $177 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $179 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$7283 = 0;
     do {
      $900 = $166 + $104 * (+($j$7283 | 0) + .5) / $167;
      if ($179) {
       $i$8279 = 0;
       do {
        $905 = $166 + $104 * (+($i$8279 | 0) + .5) / $168;
        $912 = +HEAPF64[$171 >> 3] + (+HEAPF64[$169 >> 3] * $905 + $900 * +HEAPF64[$170 >> 3]);
        if ($912 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $922 = (+HEAPF64[$173 >> 3] + ($905 * +HEAPF64[$para >> 3] + $900 * +HEAPF64[$172 >> 3])) / $912;
        HEAPF32[$xc2 >> 2] = $922;
        $931 = (+HEAPF64[$176 >> 3] + ($905 * +HEAPF64[$174 >> 3] + $900 * +HEAPF64[$175 >> 3])) / $912;
        HEAPF32[$yc2 >> 2] = $931;
        _arParamIdeal2ObservLTf($paramLTf, $922, $931, $xc2, $yc2) | 0;
        $932 = +HEAPF32[$xc2 >> 2];
        if ($177) {
         $xc$7 = ((~~($932 + 1.0) | 0) / 2 | 0) << 1;
         $yc$7 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$7 = ~~($932 + .5);
         $yc$7 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$7 | 0) > -1) if (($yc$7 | 0) < ($ysize | 0) & (($yc$7 | 0) > -1 & ($xc$7 | 0) < ($xsize | 0))) {
         $951 = Math_imul($yc$7, $xsize) | 0;
         $954 = ($xc$7 & 65534) + $951 << 1;
         $959 = +((HEAPU8[$image + $954 >> 0] | 0) + -128 | 0);
         $973 = +((HEAPU8[$image + ($954 + 2) >> 0] | 0) + -128 | 0);
         $974 = +((HEAPU8[$image + ($951 + $xc$7 << 1 | 1) >> 0] | 0) + -16 | 0) * 298.0820007324219;
         $978 = ~~($959 * 516.4110107421875 + $974) >> 8;
         $984 = ~~($974 - $959 * 100.29100036621094 - $973 * 208.1199951171875) >> 8;
         $988 = ~~($974 + $973 * 408.5830078125) >> 8;
         $990 = ($978 | 0) > 0 ? $978 : 0;
         $996 = ((Math_imul(($j$7283 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$8279 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $997 = $108 + ($996 << 2) | 0;
         HEAP32[$997 >> 2] = (($990 | 0) < 255 ? $990 : 255) + (HEAP32[$997 >> 2] | 0);
         $1001 = ($984 | 0) > 0 ? $984 : 0;
         $1005 = $108 + ($996 + 1 << 2) | 0;
         HEAP32[$1005 >> 2] = (($1001 | 0) < 255 ? $1001 : 255) + (HEAP32[$1005 >> 2] | 0);
         $1009 = ($988 | 0) > 0 ? $988 : 0;
         $1012 = $108 + ($996 + 2 << 2) | 0;
         HEAP32[$1012 >> 2] = (($1009 | 0) < 255 ? $1009 : 255) + (HEAP32[$1012 >> 2] | 0);
        }
        $i$8279 = $i$8279 + 1 | 0;
       } while (($i$8279 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$7283 = $j$7283 + 1 | 0;
     } while (($j$7283 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 8:
   {
    $152 = $103 + 100.0;
    $153 = +($ydiv2$3 | 0);
    $154 = +($sample_size$xdiv2$2 | 0);
    $155 = $para + 48 | 0;
    $156 = $para + 56 | 0;
    $157 = $para + 64 | 0;
    $158 = $para + 8 | 0;
    $159 = $para + 16 | 0;
    $160 = $para + 24 | 0;
    $161 = $para + 32 | 0;
    $162 = $para + 40 | 0;
    $163 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $165 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$8289 = 0;
     do {
      $1023 = $152 + $104 * (+($j$8289 | 0) + .5) / $153;
      if ($165) {
       $i$9285 = 0;
       do {
        $1028 = $152 + $104 * (+($i$9285 | 0) + .5) / $154;
        $1035 = +HEAPF64[$157 >> 3] + (+HEAPF64[$155 >> 3] * $1028 + $1023 * +HEAPF64[$156 >> 3]);
        if ($1035 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $1045 = (+HEAPF64[$159 >> 3] + ($1028 * +HEAPF64[$para >> 3] + $1023 * +HEAPF64[$158 >> 3])) / $1035;
        HEAPF32[$xc2 >> 2] = $1045;
        $1054 = (+HEAPF64[$162 >> 3] + ($1028 * +HEAPF64[$160 >> 3] + $1023 * +HEAPF64[$161 >> 3])) / $1035;
        HEAPF32[$yc2 >> 2] = $1054;
        _arParamIdeal2ObservLTf($paramLTf, $1045, $1054, $xc2, $yc2) | 0;
        $1055 = +HEAPF32[$xc2 >> 2];
        if ($163) {
         $xc$8 = ((~~($1055 + 1.0) | 0) / 2 | 0) << 1;
         $yc$8 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$8 = ~~($1055 + .5);
         $yc$8 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$8 | 0) > -1) if (($yc$8 | 0) < ($ysize | 0) & (($yc$8 | 0) > -1 & ($xc$8 | 0) < ($xsize | 0))) {
         $1074 = Math_imul($yc$8, $xsize) | 0;
         $1084 = ($xc$8 & 65534) + $1074 << 1;
         $1090 = +((HEAPU8[$image + ($1084 | 1) >> 0] | 0) + -128 | 0);
         $1096 = +((HEAPU8[$image + ($1084 + 3) >> 0] | 0) + -128 | 0);
         $1097 = +((HEAPU8[$image + ($1074 + $xc$8 << 1) >> 0] | 0) + -16 | 0) * 298.0820007324219;
         $1101 = ~~($1097 + $1090 * 516.4110107421875) >> 8;
         $1107 = ~~($1097 - $1090 * 100.29100036621094 - $1096 * 208.1199951171875) >> 8;
         $1111 = ~~($1097 + $1096 * 408.5830078125) >> 8;
         $1113 = ($1101 | 0) > 0 ? $1101 : 0;
         $1119 = ((Math_imul(($j$8289 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$9285 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $1120 = $108 + ($1119 << 2) | 0;
         HEAP32[$1120 >> 2] = (($1113 | 0) < 255 ? $1113 : 255) + (HEAP32[$1120 >> 2] | 0);
         $1124 = ($1107 | 0) > 0 ? $1107 : 0;
         $1128 = $108 + ($1119 + 1 << 2) | 0;
         HEAP32[$1128 >> 2] = (($1124 | 0) < 255 ? $1124 : 255) + (HEAP32[$1128 >> 2] | 0);
         $1132 = ($1111 | 0) > 0 ? $1111 : 0;
         $1135 = $108 + ($1119 + 2 << 2) | 0;
         HEAP32[$1135 >> 2] = (($1132 | 0) < 255 ? $1132 : 255) + (HEAP32[$1135 >> 2] | 0);
        }
        $i$9285 = $i$9285 + 1 | 0;
       } while (($i$9285 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$8289 = $j$8289 + 1 | 0;
     } while (($j$8289 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 9:
   {
    $138 = $103 + 100.0;
    $139 = +($ydiv2$3 | 0);
    $140 = +($sample_size$xdiv2$2 | 0);
    $141 = $para + 48 | 0;
    $142 = $para + 56 | 0;
    $143 = $para + 64 | 0;
    $144 = $para + 8 | 0;
    $145 = $para + 16 | 0;
    $146 = $para + 24 | 0;
    $147 = $para + 32 | 0;
    $148 = $para + 40 | 0;
    $149 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $151 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$9295 = 0;
     do {
      $1146 = $138 + $104 * (+($j$9295 | 0) + .5) / $139;
      if ($151) {
       $i$10291 = 0;
       do {
        $1151 = $138 + $104 * (+($i$10291 | 0) + .5) / $140;
        $1158 = +HEAPF64[$143 >> 3] + (+HEAPF64[$141 >> 3] * $1151 + $1146 * +HEAPF64[$142 >> 3]);
        if ($1158 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $1168 = (+HEAPF64[$145 >> 3] + ($1151 * +HEAPF64[$para >> 3] + $1146 * +HEAPF64[$144 >> 3])) / $1158;
        HEAPF32[$xc2 >> 2] = $1168;
        $1177 = (+HEAPF64[$148 >> 3] + ($1151 * +HEAPF64[$146 >> 3] + $1146 * +HEAPF64[$147 >> 3])) / $1158;
        HEAPF32[$yc2 >> 2] = $1177;
        _arParamIdeal2ObservLTf($paramLTf, $1168, $1177, $xc2, $yc2) | 0;
        $1178 = +HEAPF32[$xc2 >> 2];
        if ($149) {
         $xc$9 = ((~~($1178 + 1.0) | 0) / 2 | 0) << 1;
         $yc$9 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$9 = ~~($1178 + .5);
         $yc$9 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$9 | 0) > -1) if (($yc$9 | 0) < ($ysize | 0) & (($yc$9 | 0) > -1 & ($xc$9 | 0) < ($xsize | 0))) {
         $1199 = (Math_imul($yc$9, $xsize) | 0) + $xc$9 << 1;
         $1203 = HEAPU8[$image + ($1199 | 1) >> 0] | 0;
         $1211 = ((Math_imul(($j$9295 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$10291 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $1212 = $108 + ($1211 << 2) | 0;
         HEAP32[$1212 >> 2] = ($1203 << 3 & 248 | 4) + (HEAP32[$1212 >> 2] | 0);
         $1217 = HEAPU8[$image + $1199 >> 0] | 0;
         $1225 = $108 + ($1211 + 1 << 2) | 0;
         HEAP32[$1225 >> 2] = ($1217 << 5 & 224 | $1203 >>> 3 & 28 | 2) + (HEAP32[$1225 >> 2] | 0);
         $1231 = $108 + ($1211 + 2 << 2) | 0;
         HEAP32[$1231 >> 2] = ($1217 & 248 | 4) + (HEAP32[$1231 >> 2] | 0);
        }
        $i$10291 = $i$10291 + 1 | 0;
       } while (($i$10291 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$9295 = $j$9295 + 1 | 0;
     } while (($j$9295 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 10:
   {
    $124 = $103 + 100.0;
    $125 = +($ydiv2$3 | 0);
    $126 = +($sample_size$xdiv2$2 | 0);
    $127 = $para + 48 | 0;
    $128 = $para + 56 | 0;
    $129 = $para + 64 | 0;
    $130 = $para + 8 | 0;
    $131 = $para + 16 | 0;
    $132 = $para + 24 | 0;
    $133 = $para + 32 | 0;
    $134 = $para + 40 | 0;
    $135 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $137 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$10301 = 0;
     do {
      $1242 = $124 + $104 * (+($j$10301 | 0) + .5) / $125;
      if ($137) {
       $i$11297 = 0;
       do {
        $1247 = $124 + $104 * (+($i$11297 | 0) + .5) / $126;
        $1254 = +HEAPF64[$129 >> 3] + (+HEAPF64[$127 >> 3] * $1247 + $1242 * +HEAPF64[$128 >> 3]);
        if ($1254 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $1264 = (+HEAPF64[$131 >> 3] + ($1247 * +HEAPF64[$para >> 3] + $1242 * +HEAPF64[$130 >> 3])) / $1254;
        HEAPF32[$xc2 >> 2] = $1264;
        $1273 = (+HEAPF64[$134 >> 3] + ($1247 * +HEAPF64[$132 >> 3] + $1242 * +HEAPF64[$133 >> 3])) / $1254;
        HEAPF32[$yc2 >> 2] = $1273;
        _arParamIdeal2ObservLTf($paramLTf, $1264, $1273, $xc2, $yc2) | 0;
        $1274 = +HEAPF32[$xc2 >> 2];
        if ($135) {
         $xc$10 = ((~~($1274 + 1.0) | 0) / 2 | 0) << 1;
         $yc$10 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$10 = ~~($1274 + .5);
         $yc$10 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$10 | 0) > -1) if (($yc$10 | 0) < ($ysize | 0) & (($yc$10 | 0) > -1 & ($xc$10 | 0) < ($xsize | 0))) {
         $1295 = (Math_imul($yc$10, $xsize) | 0) + $xc$10 << 1;
         $1299 = HEAPU8[$image + ($1295 | 1) >> 0] | 0;
         $1307 = ((Math_imul(($j$10301 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$11297 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $1308 = $108 + ($1307 << 2) | 0;
         HEAP32[$1308 >> 2] = ($1299 << 2 & 248 | 4) + (HEAP32[$1308 >> 2] | 0);
         $1313 = HEAPU8[$image + $1295 >> 0] | 0;
         $1321 = $108 + ($1307 + 1 << 2) | 0;
         HEAP32[$1321 >> 2] = ($1313 << 5 & 224 | $1299 >>> 3 & 24 | 4) + (HEAP32[$1321 >> 2] | 0);
         $1327 = $108 + ($1307 + 2 << 2) | 0;
         HEAP32[$1327 >> 2] = ($1313 & 248 | 4) + (HEAP32[$1327 >> 2] | 0);
        }
        $i$11297 = $i$11297 + 1 | 0;
       } while (($i$11297 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$10301 = $j$10301 + 1 | 0;
     } while (($j$10301 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  case 11:
   {
    $110 = $103 + 100.0;
    $111 = +($ydiv2$3 | 0);
    $112 = +($sample_size$xdiv2$2 | 0);
    $113 = $para + 48 | 0;
    $114 = $para + 56 | 0;
    $115 = $para + 64 | 0;
    $116 = $para + 8 | 0;
    $117 = $para + 16 | 0;
    $118 = $para + 24 | 0;
    $119 = $para + 32 | 0;
    $120 = $para + 40 | 0;
    $121 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) > 0) {
     $123 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$11307 = 0;
     do {
      $1338 = $110 + $104 * (+($j$11307 | 0) + .5) / $111;
      if ($123) {
       $i$12303 = 0;
       do {
        $1343 = $110 + $104 * (+($i$12303 | 0) + .5) / $112;
        $1350 = +HEAPF64[$115 >> 3] + (+HEAPF64[$113 >> 3] * $1343 + $1338 * +HEAPF64[$114 >> 3]);
        if ($1350 == 0.0) {
         $ext_patt2$0 = $108;
         label = 278;
         break L13;
        }
        $1360 = (+HEAPF64[$117 >> 3] + ($1343 * +HEAPF64[$para >> 3] + $1338 * +HEAPF64[$116 >> 3])) / $1350;
        HEAPF32[$xc2 >> 2] = $1360;
        $1369 = (+HEAPF64[$120 >> 3] + ($1343 * +HEAPF64[$118 >> 3] + $1338 * +HEAPF64[$119 >> 3])) / $1350;
        HEAPF32[$yc2 >> 2] = $1369;
        _arParamIdeal2ObservLTf($paramLTf, $1360, $1369, $xc2, $yc2) | 0;
        $1370 = +HEAPF32[$xc2 >> 2];
        if ($121) {
         $xc$11 = ((~~($1370 + 1.0) | 0) / 2 | 0) << 1;
         $yc$11 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$11 = ~~($1370 + .5);
         $yc$11 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$11 | 0) > -1) if (($yc$11 | 0) < ($ysize | 0) & (($yc$11 | 0) > -1 & ($xc$11 | 0) < ($xsize | 0))) {
         $1391 = (Math_imul($yc$11, $xsize) | 0) + $xc$11 << 1;
         $1402 = ((Math_imul(($j$11307 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$12303 | 0) / ($99 | 0) | 0) | 0) * 3 | 0;
         $1403 = $108 + ($1402 << 2) | 0;
         HEAP32[$1403 >> 2] = (HEAP32[$1403 >> 2] | 0) + ((HEAPU8[$image + ($1391 | 1) >> 0] | 0) & 240 | 8);
         $1408 = HEAPU8[$image + $1391 >> 0] | 0;
         $1413 = $108 + ($1402 + 1 << 2) | 0;
         HEAP32[$1413 >> 2] = ($1408 << 4 & 240 | 8) + (HEAP32[$1413 >> 2] | 0);
         $1419 = $108 + ($1402 + 2 << 2) | 0;
         HEAP32[$1419 >> 2] = ($1408 & 240 | 8) + (HEAP32[$1419 >> 2] | 0);
        }
        $i$12303 = $i$12303 + 1 | 0;
       } while (($i$12303 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$11307 = $j$11307 + 1 | 0;
     } while (($j$11307 | 0) < ($ydiv2$3 | 0));
    }
    break;
   }
  default:
   {
    _arLog(3, 4615, $vararg_buffer1);
    $ext_patt2$0 = $108;
    label = 278;
    break L13;
   }
  } while (0);
  $278 = Math_imul($100, $99) | 0;
  if ($106) {
   $i$13236 = 0;
   do {
    HEAP8[$ext_patt + $i$13236 >> 0] = ((HEAP32[$108 + ($i$13236 << 2) >> 2] | 0) >>> 0) / ($278 >>> 0) | 0;
    $i$13236 = $i$13236 + 1 | 0;
   } while (($i$13236 | 0) < ($107 | 0));
  }
  _free($108);
  $$0 = 0;
 } else {
  $1433 = _calloc($106, 4) | 0;
  if (!$1433) {
   _arLog(3, 5471, $vararg_buffer3);
   _exit(1);
  }
  L233 : do if ($pixelFormat >>> 0 < 2) {
   $1436 = $103 + 100.0;
   $1437 = +($ydiv2$3 | 0);
   $1438 = +($sample_size$xdiv2$2 | 0);
   $1439 = $para + 48 | 0;
   $1440 = $para + 56 | 0;
   $1441 = $para + 64 | 0;
   $1442 = $para + 8 | 0;
   $1443 = $para + 16 | 0;
   $1444 = $para + 24 | 0;
   $1445 = $para + 32 | 0;
   $1446 = $para + 40 | 0;
   $1447 = ($imageProcMode | 0) == 1;
   if (($ydiv2$3 | 0) > 0) {
    $1449 = ($sample_size$xdiv2$2 | 0) > 0;
    $j$12316 = 0;
    do {
     $1456 = $1436 + $104 * (+($j$12316 | 0) + .5) / $1437;
     if ($1449) {
      $i$14312 = 0;
      do {
       $1461 = $1436 + $104 * (+($i$14312 | 0) + .5) / $1438;
       $1468 = +HEAPF64[$1441 >> 3] + (+HEAPF64[$1439 >> 3] * $1461 + $1456 * +HEAPF64[$1440 >> 3]);
       if ($1468 == 0.0) {
        $ext_patt2$0 = $1433;
        label = 278;
        break L13;
       }
       $1478 = (+HEAPF64[$1443 >> 3] + ($1461 * +HEAPF64[$para >> 3] + $1456 * +HEAPF64[$1442 >> 3])) / $1468;
       HEAPF32[$xc2 >> 2] = $1478;
       $1487 = (+HEAPF64[$1446 >> 3] + ($1461 * +HEAPF64[$1444 >> 3] + $1456 * +HEAPF64[$1445 >> 3])) / $1468;
       HEAPF32[$yc2 >> 2] = $1487;
       _arParamIdeal2ObservLTf($paramLTf, $1478, $1487, $xc2, $yc2) | 0;
       $1488 = +HEAPF32[$xc2 >> 2];
       if ($1447) {
        $xc$12 = ((~~($1488 + 1.0) | 0) / 2 | 0) << 1;
        $yc$12 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
       } else {
        $xc$12 = ~~($1488 + .5);
        $yc$12 = ~~(+HEAPF32[$yc2 >> 2] + .5);
       }
       if (($xc$12 | 0) > -1) if (($yc$12 | 0) < ($ysize | 0) & (($yc$12 | 0) > -1 & ($xc$12 | 0) < ($xsize | 0))) {
        $1509 = ((Math_imul($yc$12, $xsize) | 0) + $xc$12 | 0) * 3 | 0;
        $1528 = $1433 + ((Math_imul(($j$12316 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$14312 | 0) / ($99 | 0) | 0) << 2) | 0;
        HEAP32[$1528 >> 2] = (HEAP32[$1528 >> 2] | 0) + ((((HEAPU8[$image + ($1509 + 1) >> 0] | 0) + (HEAPU8[$image + $1509 >> 0] | 0) + (HEAPU8[$image + ($1509 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0);
       }
       $i$14312 = $i$14312 + 1 | 0;
      } while (($i$14312 | 0) < ($sample_size$xdiv2$2 | 0));
     }
     $j$12316 = $j$12316 + 1 | 0;
    } while (($j$12316 | 0) < ($ydiv2$3 | 0));
   }
  } else {
   if (($pixelFormat & -2 | 0) == 2) {
    $1537 = $103 + 100.0;
    $1538 = +($ydiv2$3 | 0);
    $1539 = +($sample_size$xdiv2$2 | 0);
    $1540 = $para + 48 | 0;
    $1541 = $para + 56 | 0;
    $1542 = $para + 64 | 0;
    $1543 = $para + 8 | 0;
    $1544 = $para + 16 | 0;
    $1545 = $para + 24 | 0;
    $1546 = $para + 32 | 0;
    $1547 = $para + 40 | 0;
    $1548 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) <= 0) break;
    $1550 = ($sample_size$xdiv2$2 | 0) > 0;
    $j$13322 = 0;
    while (1) {
     $1555 = $1537 + $104 * (+($j$13322 | 0) + .5) / $1538;
     if ($1550) {
      $i$15318 = 0;
      do {
       $1560 = $1537 + $104 * (+($i$15318 | 0) + .5) / $1539;
       $1567 = +HEAPF64[$1542 >> 3] + (+HEAPF64[$1540 >> 3] * $1560 + $1555 * +HEAPF64[$1541 >> 3]);
       if ($1567 == 0.0) {
        $ext_patt2$0 = $1433;
        label = 278;
        break L13;
       }
       $1577 = (+HEAPF64[$1544 >> 3] + ($1560 * +HEAPF64[$para >> 3] + $1555 * +HEAPF64[$1543 >> 3])) / $1567;
       HEAPF32[$xc2 >> 2] = $1577;
       $1586 = (+HEAPF64[$1547 >> 3] + ($1560 * +HEAPF64[$1545 >> 3] + $1555 * +HEAPF64[$1546 >> 3])) / $1567;
       HEAPF32[$yc2 >> 2] = $1586;
       _arParamIdeal2ObservLTf($paramLTf, $1577, $1586, $xc2, $yc2) | 0;
       $1587 = +HEAPF32[$xc2 >> 2];
       if ($1548) {
        $xc$13 = ((~~($1587 + 1.0) | 0) / 2 | 0) << 1;
        $yc$13 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
       } else {
        $xc$13 = ~~($1587 + .5);
        $yc$13 = ~~(+HEAPF32[$yc2 >> 2] + .5);
       }
       if (($xc$13 | 0) > -1) if (($yc$13 | 0) < ($ysize | 0) & (($yc$13 | 0) > -1 & ($xc$13 | 0) < ($xsize | 0))) {
        $1608 = (Math_imul($yc$13, $xsize) | 0) + $xc$13 << 2;
        $1627 = $1433 + ((Math_imul(($j$13322 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$15318 | 0) / ($99 | 0) | 0) << 2) | 0;
        HEAP32[$1627 >> 2] = (HEAP32[$1627 >> 2] | 0) + ((((HEAPU8[$image + ($1608 | 1) >> 0] | 0) + (HEAPU8[$image + $1608 >> 0] | 0) + (HEAPU8[$image + ($1608 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0);
       }
       $i$15318 = $i$15318 + 1 | 0;
      } while (($i$15318 | 0) < ($sample_size$xdiv2$2 | 0));
     }
     $j$13322 = $j$13322 + 1 | 0;
     if (($j$13322 | 0) >= ($ydiv2$3 | 0)) break L233;
    }
   }
   if (($pixelFormat & -3 | 0) == 4) {
    $1636 = $103 + 100.0;
    $1637 = +($ydiv2$3 | 0);
    $1638 = +($sample_size$xdiv2$2 | 0);
    $1639 = $para + 48 | 0;
    $1640 = $para + 56 | 0;
    $1641 = $para + 64 | 0;
    $1642 = $para + 8 | 0;
    $1643 = $para + 16 | 0;
    $1644 = $para + 24 | 0;
    $1645 = $para + 32 | 0;
    $1646 = $para + 40 | 0;
    $1647 = ($imageProcMode | 0) == 1;
    if (($ydiv2$3 | 0) <= 0) break;
    $1649 = ($sample_size$xdiv2$2 | 0) > 0;
    $j$14328 = 0;
    while (1) {
     $1654 = $1636 + $104 * (+($j$14328 | 0) + .5) / $1637;
     if ($1649) {
      $i$16324 = 0;
      do {
       $1659 = $1636 + $104 * (+($i$16324 | 0) + .5) / $1638;
       $1666 = +HEAPF64[$1641 >> 3] + (+HEAPF64[$1639 >> 3] * $1659 + $1654 * +HEAPF64[$1640 >> 3]);
       if ($1666 == 0.0) {
        $ext_patt2$0 = $1433;
        label = 278;
        break L13;
       }
       $1676 = (+HEAPF64[$1643 >> 3] + ($1659 * +HEAPF64[$para >> 3] + $1654 * +HEAPF64[$1642 >> 3])) / $1666;
       HEAPF32[$xc2 >> 2] = $1676;
       $1685 = (+HEAPF64[$1646 >> 3] + ($1659 * +HEAPF64[$1644 >> 3] + $1654 * +HEAPF64[$1645 >> 3])) / $1666;
       HEAPF32[$yc2 >> 2] = $1685;
       _arParamIdeal2ObservLTf($paramLTf, $1676, $1685, $xc2, $yc2) | 0;
       $1686 = +HEAPF32[$xc2 >> 2];
       if ($1647) {
        $xc$14 = ((~~($1686 + 1.0) | 0) / 2 | 0) << 1;
        $yc$14 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
       } else {
        $xc$14 = ~~($1686 + .5);
        $yc$14 = ~~(+HEAPF32[$yc2 >> 2] + .5);
       }
       if (($xc$14 | 0) > -1) if (($yc$14 | 0) < ($ysize | 0) & (($yc$14 | 0) > -1 & ($xc$14 | 0) < ($xsize | 0))) {
        $1707 = (Math_imul($yc$14, $xsize) | 0) + $xc$14 << 2;
        $1727 = $1433 + ((Math_imul(($j$14328 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$16324 | 0) / ($99 | 0) | 0) << 2) | 0;
        HEAP32[$1727 >> 2] = (HEAP32[$1727 >> 2] | 0) + ((((HEAPU8[$image + ($1707 | 2) >> 0] | 0) + (HEAPU8[$image + ($1707 | 1) >> 0] | 0) + (HEAPU8[$image + ($1707 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0);
       }
       $i$16324 = $i$16324 + 1 | 0;
      } while (($i$16324 | 0) < ($sample_size$xdiv2$2 | 0));
     }
     $j$14328 = $j$14328 + 1 | 0;
     if (($j$14328 | 0) >= ($ydiv2$3 | 0)) break L233;
    }
   }
   switch ($pixelFormat | 0) {
   case 5:
   case 12:
   case 13:
   case 14:
    {
     $1804 = $103 + 100.0;
     $1805 = +($ydiv2$3 | 0);
     $1806 = +($sample_size$xdiv2$2 | 0);
     $1807 = $para + 48 | 0;
     $1808 = $para + 56 | 0;
     $1809 = $para + 64 | 0;
     $1810 = $para + 8 | 0;
     $1811 = $para + 16 | 0;
     $1812 = $para + 24 | 0;
     $1813 = $para + 32 | 0;
     $1814 = $para + 40 | 0;
     $1815 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1817 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$15334 = 0;
     do {
      $1822 = $1804 + $104 * (+($j$15334 | 0) + .5) / $1805;
      if ($1817) {
       $i$17330 = 0;
       do {
        $1827 = $1804 + $104 * (+($i$17330 | 0) + .5) / $1806;
        $1834 = +HEAPF64[$1809 >> 3] + (+HEAPF64[$1807 >> 3] * $1827 + $1822 * +HEAPF64[$1808 >> 3]);
        if ($1834 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $1844 = (+HEAPF64[$1811 >> 3] + ($1827 * +HEAPF64[$para >> 3] + $1822 * +HEAPF64[$1810 >> 3])) / $1834;
        HEAPF32[$xc2 >> 2] = $1844;
        $1853 = (+HEAPF64[$1814 >> 3] + ($1827 * +HEAPF64[$1812 >> 3] + $1822 * +HEAPF64[$1813 >> 3])) / $1834;
        HEAPF32[$yc2 >> 2] = $1853;
        _arParamIdeal2ObservLTf($paramLTf, $1844, $1853, $xc2, $yc2) | 0;
        $1854 = +HEAPF32[$xc2 >> 2];
        if ($1815) {
         $xc$15 = ((~~($1854 + 1.0) | 0) / 2 | 0) << 1;
         $yc$15 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$15 = ~~($1854 + .5);
         $yc$15 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$15 | 0) > -1) if (($yc$15 | 0) < ($ysize | 0) & (($yc$15 | 0) > -1 & ($xc$15 | 0) < ($xsize | 0))) {
         $1875 = $image + ((Math_imul($yc$15, $xsize) | 0) + $xc$15) | 0;
         $1882 = $1433 + ((Math_imul(($j$15334 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$17330 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$1882 >> 2] = (HEAP32[$1882 >> 2] | 0) + (HEAPU8[$1875 >> 0] | 0);
        }
        $i$17330 = $i$17330 + 1 | 0;
       } while (($i$17330 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$15334 = $j$15334 + 1 | 0;
     } while (($j$15334 | 0) < ($ydiv2$3 | 0));
     break;
    }
   case 7:
    {
     $1790 = $103 + 100.0;
     $1791 = +($ydiv2$3 | 0);
     $1792 = +($sample_size$xdiv2$2 | 0);
     $1793 = $para + 48 | 0;
     $1794 = $para + 56 | 0;
     $1795 = $para + 64 | 0;
     $1796 = $para + 8 | 0;
     $1797 = $para + 16 | 0;
     $1798 = $para + 24 | 0;
     $1799 = $para + 32 | 0;
     $1800 = $para + 40 | 0;
     $1801 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1803 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$16340 = 0;
     do {
      $1893 = $1790 + $104 * (+($j$16340 | 0) + .5) / $1791;
      if ($1803) {
       $i$18336 = 0;
       do {
        $1898 = $1790 + $104 * (+($i$18336 | 0) + .5) / $1792;
        $1905 = +HEAPF64[$1795 >> 3] + (+HEAPF64[$1793 >> 3] * $1898 + $1893 * +HEAPF64[$1794 >> 3]);
        if ($1905 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $1915 = (+HEAPF64[$1797 >> 3] + ($1898 * +HEAPF64[$para >> 3] + $1893 * +HEAPF64[$1796 >> 3])) / $1905;
        HEAPF32[$xc2 >> 2] = $1915;
        $1924 = (+HEAPF64[$1800 >> 3] + ($1898 * +HEAPF64[$1798 >> 3] + $1893 * +HEAPF64[$1799 >> 3])) / $1905;
        HEAPF32[$yc2 >> 2] = $1924;
        _arParamIdeal2ObservLTf($paramLTf, $1915, $1924, $xc2, $yc2) | 0;
        $1925 = +HEAPF32[$xc2 >> 2];
        if ($1801) {
         $xc$16 = ((~~($1925 + 1.0) | 0) / 2 | 0) << 1;
         $yc$16 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$16 = ~~($1925 + .5);
         $yc$16 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$16 | 0) > -1) if (($yc$16 | 0) < ($ysize | 0) & (($yc$16 | 0) > -1 & ($xc$16 | 0) < ($xsize | 0))) {
         $1948 = $image + ((Math_imul($yc$16, $xsize) | 0) + $xc$16 << 1 | 1) | 0;
         $1955 = $1433 + ((Math_imul(($j$16340 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$18336 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$1955 >> 2] = (HEAP32[$1955 >> 2] | 0) + (HEAPU8[$1948 >> 0] | 0);
        }
        $i$18336 = $i$18336 + 1 | 0;
       } while (($i$18336 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$16340 = $j$16340 + 1 | 0;
     } while (($j$16340 | 0) < ($ydiv2$3 | 0));
     break;
    }
   case 8:
    {
     $1776 = $103 + 100.0;
     $1777 = +($ydiv2$3 | 0);
     $1778 = +($sample_size$xdiv2$2 | 0);
     $1779 = $para + 48 | 0;
     $1780 = $para + 56 | 0;
     $1781 = $para + 64 | 0;
     $1782 = $para + 8 | 0;
     $1783 = $para + 16 | 0;
     $1784 = $para + 24 | 0;
     $1785 = $para + 32 | 0;
     $1786 = $para + 40 | 0;
     $1787 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1789 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$17346 = 0;
     do {
      $1966 = $1776 + $104 * (+($j$17346 | 0) + .5) / $1777;
      if ($1789) {
       $i$19342 = 0;
       do {
        $1971 = $1776 + $104 * (+($i$19342 | 0) + .5) / $1778;
        $1978 = +HEAPF64[$1781 >> 3] + (+HEAPF64[$1779 >> 3] * $1971 + $1966 * +HEAPF64[$1780 >> 3]);
        if ($1978 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $1988 = (+HEAPF64[$1783 >> 3] + ($1971 * +HEAPF64[$para >> 3] + $1966 * +HEAPF64[$1782 >> 3])) / $1978;
        HEAPF32[$xc2 >> 2] = $1988;
        $1997 = (+HEAPF64[$1786 >> 3] + ($1971 * +HEAPF64[$1784 >> 3] + $1966 * +HEAPF64[$1785 >> 3])) / $1978;
        HEAPF32[$yc2 >> 2] = $1997;
        _arParamIdeal2ObservLTf($paramLTf, $1988, $1997, $xc2, $yc2) | 0;
        $1998 = +HEAPF32[$xc2 >> 2];
        if ($1787) {
         $xc$17 = ((~~($1998 + 1.0) | 0) / 2 | 0) << 1;
         $yc$17 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$17 = ~~($1998 + .5);
         $yc$17 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$17 | 0) > -1) if (($yc$17 | 0) < ($ysize | 0) & (($yc$17 | 0) > -1 & ($xc$17 | 0) < ($xsize | 0))) {
         $2020 = $image + ((Math_imul($yc$17, $xsize) | 0) + $xc$17 << 1) | 0;
         $2027 = $1433 + ((Math_imul(($j$17346 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$19342 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$2027 >> 2] = (HEAP32[$2027 >> 2] | 0) + (HEAPU8[$2020 >> 0] | 0);
        }
        $i$19342 = $i$19342 + 1 | 0;
       } while (($i$19342 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$17346 = $j$17346 + 1 | 0;
     } while (($j$17346 | 0) < ($ydiv2$3 | 0));
     break;
    }
   case 9:
    {
     $1762 = $103 + 100.0;
     $1763 = +($ydiv2$3 | 0);
     $1764 = +($sample_size$xdiv2$2 | 0);
     $1765 = $para + 48 | 0;
     $1766 = $para + 56 | 0;
     $1767 = $para + 64 | 0;
     $1768 = $para + 8 | 0;
     $1769 = $para + 16 | 0;
     $1770 = $para + 24 | 0;
     $1771 = $para + 32 | 0;
     $1772 = $para + 40 | 0;
     $1773 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1775 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$18352 = 0;
     do {
      $2038 = $1762 + $104 * (+($j$18352 | 0) + .5) / $1763;
      if ($1775) {
       $i$20348 = 0;
       do {
        $2043 = $1762 + $104 * (+($i$20348 | 0) + .5) / $1764;
        $2050 = +HEAPF64[$1767 >> 3] + (+HEAPF64[$1765 >> 3] * $2043 + $2038 * +HEAPF64[$1766 >> 3]);
        if ($2050 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $2060 = (+HEAPF64[$1769 >> 3] + ($2043 * +HEAPF64[$para >> 3] + $2038 * +HEAPF64[$1768 >> 3])) / $2050;
        HEAPF32[$xc2 >> 2] = $2060;
        $2069 = (+HEAPF64[$1772 >> 3] + ($2043 * +HEAPF64[$1770 >> 3] + $2038 * +HEAPF64[$1771 >> 3])) / $2050;
        HEAPF32[$yc2 >> 2] = $2069;
        _arParamIdeal2ObservLTf($paramLTf, $2060, $2069, $xc2, $yc2) | 0;
        $2070 = +HEAPF32[$xc2 >> 2];
        if ($1773) {
         $xc$18 = ((~~($2070 + 1.0) | 0) / 2 | 0) << 1;
         $yc$18 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$18 = ~~($2070 + .5);
         $yc$18 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$18 | 0) > -1) if (($yc$18 | 0) < ($ysize | 0) & (($yc$18 | 0) > -1 & ($xc$18 | 0) < ($xsize | 0))) {
         $2091 = (Math_imul($yc$18, $xsize) | 0) + $xc$18 << 1;
         $2094 = HEAPU8[$image + $2091 >> 0] | 0;
         $2102 = HEAPU8[$image + ($2091 | 1) >> 0] | 0;
         $2117 = $1433 + ((Math_imul(($j$18352 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$20348 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$2117 >> 2] = (HEAP32[$2117 >> 2] | 0) + (((($2102 << 3 & 248 | 4) + ($2094 & 248 | 4) + ($2094 << 5 & 224 | $2102 >>> 3 & 28 | 2) | 0) >>> 0) / 3 | 0);
        }
        $i$20348 = $i$20348 + 1 | 0;
       } while (($i$20348 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$18352 = $j$18352 + 1 | 0;
     } while (($j$18352 | 0) < ($ydiv2$3 | 0));
     break;
    }
   case 10:
    {
     $1748 = $103 + 100.0;
     $1749 = +($ydiv2$3 | 0);
     $1750 = +($sample_size$xdiv2$2 | 0);
     $1751 = $para + 48 | 0;
     $1752 = $para + 56 | 0;
     $1753 = $para + 64 | 0;
     $1754 = $para + 8 | 0;
     $1755 = $para + 16 | 0;
     $1756 = $para + 24 | 0;
     $1757 = $para + 32 | 0;
     $1758 = $para + 40 | 0;
     $1759 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1761 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$19358 = 0;
     do {
      $2128 = $1748 + $104 * (+($j$19358 | 0) + .5) / $1749;
      if ($1761) {
       $i$21354 = 0;
       do {
        $2133 = $1748 + $104 * (+($i$21354 | 0) + .5) / $1750;
        $2140 = +HEAPF64[$1753 >> 3] + (+HEAPF64[$1751 >> 3] * $2133 + $2128 * +HEAPF64[$1752 >> 3]);
        if ($2140 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $2150 = (+HEAPF64[$1755 >> 3] + ($2133 * +HEAPF64[$para >> 3] + $2128 * +HEAPF64[$1754 >> 3])) / $2140;
        HEAPF32[$xc2 >> 2] = $2150;
        $2159 = (+HEAPF64[$1758 >> 3] + ($2133 * +HEAPF64[$1756 >> 3] + $2128 * +HEAPF64[$1757 >> 3])) / $2140;
        HEAPF32[$yc2 >> 2] = $2159;
        _arParamIdeal2ObservLTf($paramLTf, $2150, $2159, $xc2, $yc2) | 0;
        $2160 = +HEAPF32[$xc2 >> 2];
        if ($1759) {
         $xc$19 = ((~~($2160 + 1.0) | 0) / 2 | 0) << 1;
         $yc$19 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$19 = ~~($2160 + .5);
         $yc$19 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$19 | 0) > -1) if (($yc$19 | 0) < ($ysize | 0) & (($yc$19 | 0) > -1 & ($xc$19 | 0) < ($xsize | 0))) {
         $2181 = (Math_imul($yc$19, $xsize) | 0) + $xc$19 << 1;
         $2184 = HEAPU8[$image + $2181 >> 0] | 0;
         $2192 = HEAPU8[$image + ($2181 | 1) >> 0] | 0;
         $2207 = $1433 + ((Math_imul(($j$19358 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$21354 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$2207 >> 2] = (HEAP32[$2207 >> 2] | 0) + (((($2192 << 2 & 248 | 4) + ($2184 & 248 | 4) + ($2184 << 5 & 224 | $2192 >>> 3 & 24 | 4) | 0) >>> 0) / 3 | 0);
        }
        $i$21354 = $i$21354 + 1 | 0;
       } while (($i$21354 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$19358 = $j$19358 + 1 | 0;
     } while (($j$19358 | 0) < ($ydiv2$3 | 0));
     break;
    }
   case 11:
    {
     $1734 = $103 + 100.0;
     $1735 = +($ydiv2$3 | 0);
     $1736 = +($sample_size$xdiv2$2 | 0);
     $1737 = $para + 48 | 0;
     $1738 = $para + 56 | 0;
     $1739 = $para + 64 | 0;
     $1740 = $para + 8 | 0;
     $1741 = $para + 16 | 0;
     $1742 = $para + 24 | 0;
     $1743 = $para + 32 | 0;
     $1744 = $para + 40 | 0;
     $1745 = ($imageProcMode | 0) == 1;
     if (($ydiv2$3 | 0) <= 0) break L233;
     $1747 = ($sample_size$xdiv2$2 | 0) > 0;
     $j$20364 = 0;
     do {
      $2218 = $1734 + $104 * (+($j$20364 | 0) + .5) / $1735;
      if ($1747) {
       $i$22360 = 0;
       do {
        $2223 = $1734 + $104 * (+($i$22360 | 0) + .5) / $1736;
        $2230 = +HEAPF64[$1739 >> 3] + (+HEAPF64[$1737 >> 3] * $2223 + $2218 * +HEAPF64[$1738 >> 3]);
        if ($2230 == 0.0) {
         $ext_patt2$0 = $1433;
         label = 278;
         break L13;
        }
        $2240 = (+HEAPF64[$1741 >> 3] + ($2223 * +HEAPF64[$para >> 3] + $2218 * +HEAPF64[$1740 >> 3])) / $2230;
        HEAPF32[$xc2 >> 2] = $2240;
        $2249 = (+HEAPF64[$1744 >> 3] + ($2223 * +HEAPF64[$1742 >> 3] + $2218 * +HEAPF64[$1743 >> 3])) / $2230;
        HEAPF32[$yc2 >> 2] = $2249;
        _arParamIdeal2ObservLTf($paramLTf, $2240, $2249, $xc2, $yc2) | 0;
        $2250 = +HEAPF32[$xc2 >> 2];
        if ($1745) {
         $xc$20 = ((~~($2250 + 1.0) | 0) / 2 | 0) << 1;
         $yc$20 = ((~~(+HEAPF32[$yc2 >> 2] + 1.0) | 0) / 2 | 0) << 1;
        } else {
         $xc$20 = ~~($2250 + .5);
         $yc$20 = ~~(+HEAPF32[$yc2 >> 2] + .5);
        }
        if (($xc$20 | 0) > -1) if (($yc$20 | 0) < ($ysize | 0) & (($yc$20 | 0) > -1 & ($xc$20 | 0) < ($xsize | 0))) {
         $2271 = (Math_imul($yc$20, $xsize) | 0) + $xc$20 << 1;
         $2274 = HEAPU8[$image + $2271 >> 0] | 0;
         $2293 = $1433 + ((Math_imul(($j$20364 | 0) / ($100 | 0) | 0, $patt_size) | 0) + (($i$22360 | 0) / ($99 | 0) | 0) << 2) | 0;
         HEAP32[$2293 >> 2] = (HEAP32[$2293 >> 2] | 0) + (((($2274 << 4 & 240 | 8) + ($2274 & 240 | 8) + ((HEAPU8[$image + ($2271 | 1) >> 0] | 0) & 240 | 8) | 0) >>> 0) / 3 | 0);
        }
        $i$22360 = $i$22360 + 1 | 0;
       } while (($i$22360 | 0) < ($sample_size$xdiv2$2 | 0));
      }
      $j$20364 = $j$20364 + 1 | 0;
     } while (($j$20364 | 0) < ($ydiv2$3 | 0));
     break;
    }
   default:
    {
     _arLog(3, 4615, $vararg_buffer5);
     $ext_patt2$0 = $1433;
     label = 278;
     break L13;
    }
   }
  } while (0);
  $1450 = Math_imul($100, $99) | 0;
  if ($106) {
   $i$23309 = 0;
   do {
    HEAP8[$ext_patt + $i$23309 >> 0] = ((HEAP32[$1433 + ($i$23309 << 2) >> 2] | 0) >>> 0) / ($1450 >>> 0) | 0;
    $i$23309 = $i$23309 + 1 | 0;
   } while (($i$23309 | 0) < ($106 | 0));
  }
  _free($1433);
  $$0 = 0;
 } while (0);
 if ((label | 0) == 278) {
  _free($ext_patt2$0);
  $$0 = -1;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_builtin_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i103 = 0, $$0$i$i$i108 = 0, $$0$i$i$i113 = 0, $$0$i$i$i118 = 0, $$0$i$i$i123 = 0, $$0$i$i$i128 = 0, $$0$i$i$i133 = 0, $$0$i$i$i138 = 0, $$0$i$i$i14 = 0, $$0$i$i$i143 = 0, $$0$i$i$i19 = 0, $$0$i$i$i24 = 0, $$0$i$i$i29 = 0, $$0$i$i$i34 = 0, $$0$i$i$i39 = 0, $$0$i$i$i4 = 0, $$0$i$i$i44 = 0, $$0$i$i$i49 = 0, $$0$i$i$i54 = 0, $$0$i$i$i59 = 0, $$0$i$i$i66 = 0, $$0$i$i$i71 = 0, $$0$i$i$i76 = 0, $$0$i$i$i81 = 0, $$0$i$i$i88 = 0, $$0$i$i$i9 = 0, $$0$i$i$i93 = 0, $$0$i$i$i98 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $106 = 0, $108 = 0, $11 = 0, $111 = 0, $112 = 0, $115 = 0, $116 = 0, $118 = 0, $12 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $132 = 0, $134 = 0, $137 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $144 = 0, $15 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $158 = 0, $16 = 0, $160 = 0, $163 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $19 = 0, $190 = 0, $193 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $21 = 0, $210 = 0, $212 = 0, $215 = 0, $216 = 0, $219 = 0, $22 = 0, $220 = 0, $222 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $238 = 0, $24 = 0, $241 = 0, $242 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $26 = 0, $262 = 0, $264 = 0, $267 = 0, $268 = 0, $27 = 0, $271 = 0, $272 = 0, $274 = 0, $28 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $288 = 0, $290 = 0, $293 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $300 = 0, $307 = 0, $308 = 0, $309 = 0, $310 = 0, $314 = 0, $316 = 0, $319 = 0, $32 = 0, $320 = 0, $323 = 0, $324 = 0, $326 = 0, $33 = 0, $333 = 0, $334 = 0, $335 = 0, $336 = 0, $340 = 0, $342 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $350 = 0, $352 = 0, $359 = 0, $360 = 0, $361 = 0, $362 = 0, $366 = 0, $368 = 0, $371 = 0, $372 = 0, $375 = 0, $379 = 0, $382 = 0, $383 = 0, $385 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $399 = 0, $4 = 0, $401 = 0, $404 = 0, $405 = 0, $408 = 0, $409 = 0, $411 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $425 = 0, $427 = 0, $43 = 0, $430 = 0, $431 = 0, $434 = 0, $435 = 0, $437 = 0, $44 = 0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $45 = 0, $451 = 0, $453 = 0, $456 = 0, $457 = 0, $460 = 0, $461 = 0, $463 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $477 = 0, $479 = 0, $482 = 0, $483 = 0, $486 = 0, $488 = 0, $49 = 0, $491 = 0, $492 = 0, $494 = 0, $5 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $508 = 0, $51 = 0, $510 = 0, $513 = 0, $514 = 0, $517 = 0, $518 = 0, $520 = 0, $527 = 0, $528 = 0, $529 = 0, $530 = 0, $534 = 0, $536 = 0, $539 = 0, $54 = 0, $540 = 0, $543 = 0, $544 = 0, $546 = 0, $55 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $560 = 0, $562 = 0, $565 = 0, $566 = 0, $569 = 0, $570 = 0, $572 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $586 = 0, $588 = 0, $591 = 0, $592 = 0, $595 = 0, $596 = 0, $598 = 0, $6 = 0, $60 = 0, $602 = 0, $603 = 0, $605 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $619 = 0, $621 = 0, $624 = 0, $625 = 0, $628 = 0, $629 = 0, $63 = 0, $631 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0, $645 = 0, $647 = 0, $650 = 0, $651 = 0, $654 = 0, $655 = 0, $657 = 0, $66 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $671 = 0, $673 = 0, $676 = 0, $677 = 0, $680 = 0, $681 = 0, $683 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $697 = 0, $699 = 0, $7 = 0, $702 = 0, $703 = 0, $706 = 0, $707 = 0, $709 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $723 = 0, $725 = 0, $728 = 0, $729 = 0, $73 = 0, $732 = 0, $733 = 0, $735 = 0, $74 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $749 = 0, $75 = 0, $751 = 0, $754 = 0, $755 = 0, $758 = 0, $759 = 0, $76 = 0, $761 = 0, $768 = 0, $769 = 0, $770 = 0, $771 = 0, $775 = 0, $777 = 0, $780 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $8 = 0, $80 = 0, $801 = 0, $803 = 0, $806 = 0, $807 = 0, $82 = 0, $85 = 0, $86 = 0, $89 = 0, $9 = 0, $90 = 0, $92 = 0, $99 = 0, $__v$i$i142 = 0, dest = 0, sp = 0, src = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 720 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i142 = sp + 696 | 0;
 $0 = sp + 672 | 0;
 $1 = sp + 648 | 0;
 $2 = sp + 624 | 0;
 $3 = sp + 600 | 0;
 $4 = sp + 576 | 0;
 $5 = sp + 552 | 0;
 $6 = sp + 528 | 0;
 $7 = sp + 504 | 0;
 $8 = sp + 480 | 0;
 $9 = sp + 456 | 0;
 $10 = sp + 432 | 0;
 $11 = sp + 408 | 0;
 $12 = sp + 384 | 0;
 $13 = sp + 360 | 0;
 $14 = sp + 336 | 0;
 $15 = sp + 312 | 0;
 $16 = sp + 288 | 0;
 $17 = sp + 264 | 0;
 $18 = sp + 240 | 0;
 $19 = sp + 216 | 0;
 $20 = sp + 192 | 0;
 $21 = sp + 168 | 0;
 $22 = sp + 144 | 0;
 $23 = sp + 120 | 0;
 $24 = sp + 96 | 0;
 $25 = sp + 72 | 0;
 $26 = sp + 48 | 0;
 $27 = sp + 24 | 0;
 $28 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else do switch (HEAP8[$first >> 0] | 0) {
 case 118:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($0, 14202);
   $32 = $db + 4 | 0;
   $33 = HEAP32[$32 >> 2] | 0;
   $35 = HEAP32[$db + 8 >> 2] | 0;
   if ($33 >>> 0 < $35 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($33, $0);
    HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 24;
   } else {
    $42 = HEAP32[$db >> 2] | 0;
    $43 = $33 - $42 | 0;
    $44 = ($43 | 0) / 24 | 0;
    $45 = $44 + 1 | 0;
    if (($43 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $49 = ($35 - $42 | 0) / 24 | 0;
    if ($49 >>> 0 < 1073741823) {
     $51 = $49 << 1;
     $$0$i$i$i = $51 >>> 0 < $45 >>> 0 ? $45 : $51;
    } else $$0$i$i$i = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i, $44, $db + 12 | 0);
    $54 = $__v$i$i142 + 8 | 0;
    $55 = HEAP32[$54 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($55, $0);
    HEAP32[$54 >> 2] = $55 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 119:
  {
   HEAP8[$1 >> 0] = 14;
   $58 = $1 + 1 | 0;
   HEAP8[$58 >> 0] = HEAP8[13764] | 0;
   HEAP8[$58 + 1 >> 0] = HEAP8[13765] | 0;
   HEAP8[$58 + 2 >> 0] = HEAP8[13766] | 0;
   HEAP8[$58 + 3 >> 0] = HEAP8[13767] | 0;
   HEAP8[$58 + 4 >> 0] = HEAP8[13768] | 0;
   HEAP8[$58 + 5 >> 0] = HEAP8[13769] | 0;
   HEAP8[$58 + 6 >> 0] = HEAP8[13770] | 0;
   HEAP8[$1 + 8 >> 0] = 0;
   $60 = $1 + 12 | 0;
   HEAP32[$60 >> 2] = 0;
   HEAP32[$60 + 4 >> 2] = 0;
   HEAP32[$60 + 8 >> 2] = 0;
   $63 = $db + 4 | 0;
   $64 = HEAP32[$63 >> 2] | 0;
   $66 = HEAP32[$db + 8 >> 2] | 0;
   if ($64 >>> 0 < $66 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1);
    HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + 24;
   } else {
    $73 = HEAP32[$db >> 2] | 0;
    $74 = $64 - $73 | 0;
    $75 = ($74 | 0) / 24 | 0;
    $76 = $75 + 1 | 0;
    if (($74 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $80 = ($66 - $73 | 0) / 24 | 0;
    if ($80 >>> 0 < 1073741823) {
     $82 = $80 << 1;
     $$0$i$i$i4 = $82 >>> 0 < $76 >>> 0 ? $76 : $82;
    } else $$0$i$i$i4 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i4, $75, $db + 12 | 0);
    $85 = $__v$i$i142 + 8 | 0;
    $86 = HEAP32[$85 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($86, $1);
    HEAP32[$85 >> 2] = $86 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 98:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($2, 14207);
   $89 = $db + 4 | 0;
   $90 = HEAP32[$89 >> 2] | 0;
   $92 = HEAP32[$db + 8 >> 2] | 0;
   if ($90 >>> 0 < $92 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2);
    HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 24;
   } else {
    $99 = HEAP32[$db >> 2] | 0;
    $100 = $90 - $99 | 0;
    $101 = ($100 | 0) / 24 | 0;
    $102 = $101 + 1 | 0;
    if (($100 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $106 = ($92 - $99 | 0) / 24 | 0;
    if ($106 >>> 0 < 1073741823) {
     $108 = $106 << 1;
     $$0$i$i$i9 = $108 >>> 0 < $102 >>> 0 ? $102 : $108;
    } else $$0$i$i$i9 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i9, $101, $db + 12 | 0);
    $111 = $__v$i$i142 + 8 | 0;
    $112 = HEAP32[$111 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($112, $2);
    HEAP32[$111 >> 2] = $112 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 99:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($3, 13783);
   $115 = $db + 4 | 0;
   $116 = HEAP32[$115 >> 2] | 0;
   $118 = HEAP32[$db + 8 >> 2] | 0;
   if ($116 >>> 0 < $118 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3);
    HEAP32[$115 >> 2] = (HEAP32[$115 >> 2] | 0) + 24;
   } else {
    $125 = HEAP32[$db >> 2] | 0;
    $126 = $116 - $125 | 0;
    $127 = ($126 | 0) / 24 | 0;
    $128 = $127 + 1 | 0;
    if (($126 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $132 = ($118 - $125 | 0) / 24 | 0;
    if ($132 >>> 0 < 1073741823) {
     $134 = $132 << 1;
     $$0$i$i$i14 = $134 >>> 0 < $128 >>> 0 ? $128 : $134;
    } else $$0$i$i$i14 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i14, $127, $db + 12 | 0);
    $137 = $__v$i$i142 + 8 | 0;
    $138 = HEAP32[$137 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($138, $3);
    HEAP32[$137 >> 2] = $138 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 97:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($4, 13788);
   $141 = $db + 4 | 0;
   $142 = HEAP32[$141 >> 2] | 0;
   $144 = HEAP32[$db + 8 >> 2] | 0;
   if ($142 >>> 0 < $144 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4);
    HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 24;
   } else {
    $151 = HEAP32[$db >> 2] | 0;
    $152 = $142 - $151 | 0;
    $153 = ($152 | 0) / 24 | 0;
    $154 = $153 + 1 | 0;
    if (($152 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $158 = ($144 - $151 | 0) / 24 | 0;
    if ($158 >>> 0 < 1073741823) {
     $160 = $158 << 1;
     $$0$i$i$i19 = $160 >>> 0 < $154 >>> 0 ? $154 : $160;
    } else $$0$i$i$i19 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i19, $153, $db + 12 | 0);
    $163 = $__v$i$i142 + 8 | 0;
    $164 = HEAP32[$163 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($164, $4);
    HEAP32[$163 >> 2] = $164 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 104:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 13800);
   $167 = $db + 4 | 0;
   $168 = HEAP32[$167 >> 2] | 0;
   $170 = HEAP32[$db + 8 >> 2] | 0;
   if ($168 >>> 0 < $170 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5);
    HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24;
   } else {
    $177 = HEAP32[$db >> 2] | 0;
    $178 = $168 - $177 | 0;
    $179 = ($178 | 0) / 24 | 0;
    $180 = $179 + 1 | 0;
    if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $184 = ($170 - $177 | 0) / 24 | 0;
    if ($184 >>> 0 < 1073741823) {
     $186 = $184 << 1;
     $$0$i$i$i24 = $186 >>> 0 < $180 >>> 0 ? $180 : $186;
    } else $$0$i$i$i24 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i24, $179, $db + 12 | 0);
    $189 = $__v$i$i142 + 8 | 0;
    $190 = HEAP32[$189 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $5);
    HEAP32[$189 >> 2] = $190 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 115:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($6, 13814);
   $193 = $db + 4 | 0;
   $194 = HEAP32[$193 >> 2] | 0;
   $196 = HEAP32[$db + 8 >> 2] | 0;
   if ($194 >>> 0 < $196 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($194, $6);
    HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 24;
   } else {
    $203 = HEAP32[$db >> 2] | 0;
    $204 = $194 - $203 | 0;
    $205 = ($204 | 0) / 24 | 0;
    $206 = $205 + 1 | 0;
    if (($204 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $210 = ($196 - $203 | 0) / 24 | 0;
    if ($210 >>> 0 < 1073741823) {
     $212 = $210 << 1;
     $$0$i$i$i29 = $212 >>> 0 < $206 >>> 0 ? $206 : $212;
    } else $$0$i$i$i29 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i29, $205, $db + 12 | 0);
    $215 = $__v$i$i142 + 8 | 0;
    $216 = HEAP32[$215 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($216, $6);
    HEAP32[$215 >> 2] = $216 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($6);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 116:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($7, 13820);
   $219 = $db + 4 | 0;
   $220 = HEAP32[$219 >> 2] | 0;
   $222 = HEAP32[$db + 8 >> 2] | 0;
   if ($220 >>> 0 < $222 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($220, $7);
    HEAP32[$219 >> 2] = (HEAP32[$219 >> 2] | 0) + 24;
   } else {
    $229 = HEAP32[$db >> 2] | 0;
    $230 = $220 - $229 | 0;
    $231 = ($230 | 0) / 24 | 0;
    $232 = $231 + 1 | 0;
    if (($230 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $236 = ($222 - $229 | 0) / 24 | 0;
    if ($236 >>> 0 < 1073741823) {
     $238 = $236 << 1;
     $$0$i$i$i34 = $238 >>> 0 < $232 >>> 0 ? $232 : $238;
    } else $$0$i$i$i34 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i34, $231, $db + 12 | 0);
    $241 = $__v$i$i142 + 8 | 0;
    $242 = HEAP32[$241 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($242, $7);
    HEAP32[$241 >> 2] = $242 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($7);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 105:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($8, 14212);
   $245 = $db + 4 | 0;
   $246 = HEAP32[$245 >> 2] | 0;
   $248 = HEAP32[$db + 8 >> 2] | 0;
   if ($246 >>> 0 < $248 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($246, $8);
    HEAP32[$245 >> 2] = (HEAP32[$245 >> 2] | 0) + 24;
   } else {
    $255 = HEAP32[$db >> 2] | 0;
    $256 = $246 - $255 | 0;
    $257 = ($256 | 0) / 24 | 0;
    $258 = $257 + 1 | 0;
    if (($256 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $262 = ($248 - $255 | 0) / 24 | 0;
    if ($262 >>> 0 < 1073741823) {
     $264 = $262 << 1;
     $$0$i$i$i39 = $264 >>> 0 < $258 >>> 0 ? $258 : $264;
    } else $$0$i$i$i39 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i39, $257, $db + 12 | 0);
    $267 = $__v$i$i142 + 8 | 0;
    $268 = HEAP32[$267 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($268, $8);
    HEAP32[$267 >> 2] = $268 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($8);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 106:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($9, 14216);
   $271 = $db + 4 | 0;
   $272 = HEAP32[$271 >> 2] | 0;
   $274 = HEAP32[$db + 8 >> 2] | 0;
   if ($272 >>> 0 < $274 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($272, $9);
    HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + 24;
   } else {
    $281 = HEAP32[$db >> 2] | 0;
    $282 = $272 - $281 | 0;
    $283 = ($282 | 0) / 24 | 0;
    $284 = $283 + 1 | 0;
    if (($282 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $288 = ($274 - $281 | 0) / 24 | 0;
    if ($288 >>> 0 < 1073741823) {
     $290 = $288 << 1;
     $$0$i$i$i44 = $290 >>> 0 < $284 >>> 0 ? $284 : $290;
    } else $$0$i$i$i44 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i44, $283, $db + 12 | 0);
    $293 = $__v$i$i142 + 8 | 0;
    $294 = HEAP32[$293 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($294, $9);
    HEAP32[$293 >> 2] = $294 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($9);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 108:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($10, 14229);
   $297 = $db + 4 | 0;
   $298 = HEAP32[$297 >> 2] | 0;
   $300 = HEAP32[$db + 8 >> 2] | 0;
   if ($298 >>> 0 < $300 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($298, $10);
    HEAP32[$297 >> 2] = (HEAP32[$297 >> 2] | 0) + 24;
   } else {
    $307 = HEAP32[$db >> 2] | 0;
    $308 = $298 - $307 | 0;
    $309 = ($308 | 0) / 24 | 0;
    $310 = $309 + 1 | 0;
    if (($308 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $314 = ($300 - $307 | 0) / 24 | 0;
    if ($314 >>> 0 < 1073741823) {
     $316 = $314 << 1;
     $$0$i$i$i49 = $316 >>> 0 < $310 >>> 0 ? $310 : $316;
    } else $$0$i$i$i49 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i49, $309, $db + 12 | 0);
    $319 = $__v$i$i142 + 8 | 0;
    $320 = HEAP32[$319 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($320, $10);
    HEAP32[$319 >> 2] = $320 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($10);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 109:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($11, 14234);
   $323 = $db + 4 | 0;
   $324 = HEAP32[$323 >> 2] | 0;
   $326 = HEAP32[$db + 8 >> 2] | 0;
   if ($324 >>> 0 < $326 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($324, $11);
    HEAP32[$323 >> 2] = (HEAP32[$323 >> 2] | 0) + 24;
   } else {
    $333 = HEAP32[$db >> 2] | 0;
    $334 = $324 - $333 | 0;
    $335 = ($334 | 0) / 24 | 0;
    $336 = $335 + 1 | 0;
    if (($334 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $340 = ($326 - $333 | 0) / 24 | 0;
    if ($340 >>> 0 < 1073741823) {
     $342 = $340 << 1;
     $$0$i$i$i54 = $342 >>> 0 < $336 >>> 0 ? $336 : $342;
    } else $$0$i$i$i54 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i54, $335, $db + 12 | 0);
    $345 = $__v$i$i142 + 8 | 0;
    $346 = HEAP32[$345 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($346, $11);
    HEAP32[$345 >> 2] = $346 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($11);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 120:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($12, 14248);
   $349 = $db + 4 | 0;
   $350 = HEAP32[$349 >> 2] | 0;
   $352 = HEAP32[$db + 8 >> 2] | 0;
   if ($350 >>> 0 < $352 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($350, $12);
    HEAP32[$349 >> 2] = (HEAP32[$349 >> 2] | 0) + 24;
   } else {
    $359 = HEAP32[$db >> 2] | 0;
    $360 = $350 - $359 | 0;
    $361 = ($360 | 0) / 24 | 0;
    $362 = $361 + 1 | 0;
    if (($360 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $366 = ($352 - $359 | 0) / 24 | 0;
    if ($366 >>> 0 < 1073741823) {
     $368 = $366 << 1;
     $$0$i$i$i59 = $368 >>> 0 < $362 >>> 0 ? $362 : $368;
    } else $$0$i$i$i59 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i59, $361, $db + 12 | 0);
    $371 = $__v$i$i142 + 8 | 0;
    $372 = HEAP32[$371 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($372, $12);
    HEAP32[$371 >> 2] = $372 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($12);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 121:
  {
   $375 = _malloc(32) | 0;
   HEAP32[$13 + 8 >> 2] = $375;
   HEAP32[$13 >> 2] = 33;
   HEAP32[$13 + 4 >> 2] = 18;
   dest = $375;
   src = 14258;
   stop = dest + 18 | 0;
   do {
    HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
    dest = dest + 1 | 0;
    src = src + 1 | 0;
   } while ((dest | 0) < (stop | 0));
   HEAP8[$375 + 18 >> 0] = 0;
   $379 = $13 + 12 | 0;
   HEAP32[$379 >> 2] = 0;
   HEAP32[$379 + 4 >> 2] = 0;
   HEAP32[$379 + 8 >> 2] = 0;
   $382 = $db + 4 | 0;
   $383 = HEAP32[$382 >> 2] | 0;
   $385 = HEAP32[$db + 8 >> 2] | 0;
   if ($383 >>> 0 < $385 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($383, $13);
    HEAP32[$382 >> 2] = (HEAP32[$382 >> 2] | 0) + 24;
   } else {
    $392 = HEAP32[$db >> 2] | 0;
    $393 = $383 - $392 | 0;
    $394 = ($393 | 0) / 24 | 0;
    $395 = $394 + 1 | 0;
    if (($393 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $399 = ($385 - $392 | 0) / 24 | 0;
    if ($399 >>> 0 < 1073741823) {
     $401 = $399 << 1;
     $$0$i$i$i66 = $401 >>> 0 < $395 >>> 0 ? $395 : $401;
    } else $$0$i$i$i66 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i66, $394, $db + 12 | 0);
    $404 = $__v$i$i142 + 8 | 0;
    $405 = HEAP32[$404 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($405, $13);
    HEAP32[$404 >> 2] = $405 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($13);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 110:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($14, 13850);
   $408 = $db + 4 | 0;
   $409 = HEAP32[$408 >> 2] | 0;
   $411 = HEAP32[$db + 8 >> 2] | 0;
   if ($409 >>> 0 < $411 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($409, $14);
    HEAP32[$408 >> 2] = (HEAP32[$408 >> 2] | 0) + 24;
   } else {
    $418 = HEAP32[$db >> 2] | 0;
    $419 = $409 - $418 | 0;
    $420 = ($419 | 0) / 24 | 0;
    $421 = $420 + 1 | 0;
    if (($419 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $425 = ($411 - $418 | 0) / 24 | 0;
    if ($425 >>> 0 < 1073741823) {
     $427 = $425 << 1;
     $$0$i$i$i71 = $427 >>> 0 < $421 >>> 0 ? $421 : $427;
    } else $$0$i$i$i71 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i71, $420, $db + 12 | 0);
    $430 = $__v$i$i142 + 8 | 0;
    $431 = HEAP32[$430 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($431, $14);
    HEAP32[$430 >> 2] = $431 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($14);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 111:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($15, 13859);
   $434 = $db + 4 | 0;
   $435 = HEAP32[$434 >> 2] | 0;
   $437 = HEAP32[$db + 8 >> 2] | 0;
   if ($435 >>> 0 < $437 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($435, $15);
    HEAP32[$434 >> 2] = (HEAP32[$434 >> 2] | 0) + 24;
   } else {
    $444 = HEAP32[$db >> 2] | 0;
    $445 = $435 - $444 | 0;
    $446 = ($445 | 0) / 24 | 0;
    $447 = $446 + 1 | 0;
    if (($445 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $451 = ($437 - $444 | 0) / 24 | 0;
    if ($451 >>> 0 < 1073741823) {
     $453 = $451 << 1;
     $$0$i$i$i76 = $453 >>> 0 < $447 >>> 0 ? $447 : $453;
    } else $$0$i$i$i76 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i76, $446, $db + 12 | 0);
    $456 = $__v$i$i142 + 8 | 0;
    $457 = HEAP32[$456 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($457, $15);
    HEAP32[$456 >> 2] = $457 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($15);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 102:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($16, 14277);
   $460 = $db + 4 | 0;
   $461 = HEAP32[$460 >> 2] | 0;
   $463 = HEAP32[$db + 8 >> 2] | 0;
   if ($461 >>> 0 < $463 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($461, $16);
    HEAP32[$460 >> 2] = (HEAP32[$460 >> 2] | 0) + 24;
   } else {
    $470 = HEAP32[$db >> 2] | 0;
    $471 = $461 - $470 | 0;
    $472 = ($471 | 0) / 24 | 0;
    $473 = $472 + 1 | 0;
    if (($471 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $477 = ($463 - $470 | 0) / 24 | 0;
    if ($477 >>> 0 < 1073741823) {
     $479 = $477 << 1;
     $$0$i$i$i81 = $479 >>> 0 < $473 >>> 0 ? $473 : $479;
    } else $$0$i$i$i81 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i81, $472, $db + 12 | 0);
    $482 = $__v$i$i142 + 8 | 0;
    $483 = HEAP32[$482 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($483, $16);
    HEAP32[$482 >> 2] = $483 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 100:
  {
   HEAP8[$17 >> 0] = 12;
   $486 = $17 + 1 | 0;
   HEAP8[$486 >> 0] = HEAP8[14283] | 0;
   HEAP8[$486 + 1 >> 0] = HEAP8[14284] | 0;
   HEAP8[$486 + 2 >> 0] = HEAP8[14285] | 0;
   HEAP8[$486 + 3 >> 0] = HEAP8[14286] | 0;
   HEAP8[$486 + 4 >> 0] = HEAP8[14287] | 0;
   HEAP8[$486 + 5 >> 0] = HEAP8[14288] | 0;
   HEAP8[$17 + 7 >> 0] = 0;
   $488 = $17 + 12 | 0;
   HEAP32[$488 >> 2] = 0;
   HEAP32[$488 + 4 >> 2] = 0;
   HEAP32[$488 + 8 >> 2] = 0;
   $491 = $db + 4 | 0;
   $492 = HEAP32[$491 >> 2] | 0;
   $494 = HEAP32[$db + 8 >> 2] | 0;
   if ($492 >>> 0 < $494 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($492, $17);
    HEAP32[$491 >> 2] = (HEAP32[$491 >> 2] | 0) + 24;
   } else {
    $501 = HEAP32[$db >> 2] | 0;
    $502 = $492 - $501 | 0;
    $503 = ($502 | 0) / 24 | 0;
    $504 = $503 + 1 | 0;
    if (($502 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $508 = ($494 - $501 | 0) / 24 | 0;
    if ($508 >>> 0 < 1073741823) {
     $510 = $508 << 1;
     $$0$i$i$i88 = $510 >>> 0 < $504 >>> 0 ? $504 : $510;
    } else $$0$i$i$i88 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i88, $503, $db + 12 | 0);
    $513 = $__v$i$i142 + 8 | 0;
    $514 = HEAP32[$513 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($514, $17);
    HEAP32[$513 >> 2] = $514 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($17);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 101:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($18, 14290);
   $517 = $db + 4 | 0;
   $518 = HEAP32[$517 >> 2] | 0;
   $520 = HEAP32[$db + 8 >> 2] | 0;
   if ($518 >>> 0 < $520 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($518, $18);
    HEAP32[$517 >> 2] = (HEAP32[$517 >> 2] | 0) + 24;
   } else {
    $527 = HEAP32[$db >> 2] | 0;
    $528 = $518 - $527 | 0;
    $529 = ($528 | 0) / 24 | 0;
    $530 = $529 + 1 | 0;
    if (($528 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $534 = ($520 - $527 | 0) / 24 | 0;
    if ($534 >>> 0 < 1073741823) {
     $536 = $534 << 1;
     $$0$i$i$i93 = $536 >>> 0 < $530 >>> 0 ? $530 : $536;
    } else $$0$i$i$i93 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i93, $529, $db + 12 | 0);
    $539 = $__v$i$i142 + 8 | 0;
    $540 = HEAP32[$539 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($540, $18);
    HEAP32[$539 >> 2] = $540 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($18);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 103:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($19, 14302);
   $543 = $db + 4 | 0;
   $544 = HEAP32[$543 >> 2] | 0;
   $546 = HEAP32[$db + 8 >> 2] | 0;
   if ($544 >>> 0 < $546 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($544, $19);
    HEAP32[$543 >> 2] = (HEAP32[$543 >> 2] | 0) + 24;
   } else {
    $553 = HEAP32[$db >> 2] | 0;
    $554 = $544 - $553 | 0;
    $555 = ($554 | 0) / 24 | 0;
    $556 = $555 + 1 | 0;
    if (($554 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $560 = ($546 - $553 | 0) / 24 | 0;
    if ($560 >>> 0 < 1073741823) {
     $562 = $560 << 1;
     $$0$i$i$i98 = $562 >>> 0 < $556 >>> 0 ? $556 : $562;
    } else $$0$i$i$i98 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i98, $555, $db + 12 | 0);
    $565 = $__v$i$i142 + 8 | 0;
    $566 = HEAP32[$565 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($566, $19);
    HEAP32[$565 >> 2] = $566 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 122:
  {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($20, 14313);
   $569 = $db + 4 | 0;
   $570 = HEAP32[$569 >> 2] | 0;
   $572 = HEAP32[$db + 8 >> 2] | 0;
   if ($570 >>> 0 < $572 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($570, $20);
    HEAP32[$569 >> 2] = (HEAP32[$569 >> 2] | 0) + 24;
   } else {
    $579 = HEAP32[$db >> 2] | 0;
    $580 = $570 - $579 | 0;
    $581 = ($580 | 0) / 24 | 0;
    $582 = $581 + 1 | 0;
    if (($580 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $586 = ($572 - $579 | 0) / 24 | 0;
    if ($586 >>> 0 < 1073741823) {
     $588 = $586 << 1;
     $$0$i$i$i103 = $588 >>> 0 < $582 >>> 0 ? $582 : $588;
    } else $$0$i$i$i103 = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i103, $581, $db + 12 | 0);
    $591 = $__v$i$i142 + 8 | 0;
    $592 = HEAP32[$591 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($592, $20);
    HEAP32[$591 >> 2] = $592 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($20);
   $$0 = $first + 1 | 0;
   break L1;
   break;
  }
 case 117:
  {
   $595 = $first + 1 | 0;
   $596 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($595, $last, $db) | 0;
   STACKTOP = sp;
   return (($596 | 0) == ($595 | 0) ? $first : $596) | 0;
  }
 case 68:
  {
   $598 = $first + 1 | 0;
   if (($598 | 0) == ($last | 0)) {
    $$0 = $first;
    break L1;
   }
   switch (HEAP8[$598 >> 0] | 0) {
   case 100:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($21, 14317);
     $602 = $db + 4 | 0;
     $603 = HEAP32[$602 >> 2] | 0;
     $605 = HEAP32[$db + 8 >> 2] | 0;
     if ($603 >>> 0 < $605 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($603, $21);
      HEAP32[$602 >> 2] = (HEAP32[$602 >> 2] | 0) + 24;
     } else {
      $612 = HEAP32[$db >> 2] | 0;
      $613 = $603 - $612 | 0;
      $614 = ($613 | 0) / 24 | 0;
      $615 = $614 + 1 | 0;
      if (($613 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $619 = ($605 - $612 | 0) / 24 | 0;
      if ($619 >>> 0 < 1073741823) {
       $621 = $619 << 1;
       $$0$i$i$i108 = $621 >>> 0 < $615 >>> 0 ? $615 : $621;
      } else $$0$i$i$i108 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i108, $614, $db + 12 | 0);
      $624 = $__v$i$i142 + 8 | 0;
      $625 = HEAP32[$624 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($625, $21);
      HEAP32[$624 >> 2] = $625 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 101:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($22, 14327);
     $628 = $db + 4 | 0;
     $629 = HEAP32[$628 >> 2] | 0;
     $631 = HEAP32[$db + 8 >> 2] | 0;
     if ($629 >>> 0 < $631 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($629, $22);
      HEAP32[$628 >> 2] = (HEAP32[$628 >> 2] | 0) + 24;
     } else {
      $638 = HEAP32[$db >> 2] | 0;
      $639 = $629 - $638 | 0;
      $640 = ($639 | 0) / 24 | 0;
      $641 = $640 + 1 | 0;
      if (($639 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $645 = ($631 - $638 | 0) / 24 | 0;
      if ($645 >>> 0 < 1073741823) {
       $647 = $645 << 1;
       $$0$i$i$i113 = $647 >>> 0 < $641 >>> 0 ? $641 : $647;
      } else $$0$i$i$i113 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i113, $640, $db + 12 | 0);
      $650 = $__v$i$i142 + 8 | 0;
      $651 = HEAP32[$650 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($651, $22);
      HEAP32[$650 >> 2] = $651 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($22);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 102:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($23, 14338);
     $654 = $db + 4 | 0;
     $655 = HEAP32[$654 >> 2] | 0;
     $657 = HEAP32[$db + 8 >> 2] | 0;
     if ($655 >>> 0 < $657 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($655, $23);
      HEAP32[$654 >> 2] = (HEAP32[$654 >> 2] | 0) + 24;
     } else {
      $664 = HEAP32[$db >> 2] | 0;
      $665 = $655 - $664 | 0;
      $666 = ($665 | 0) / 24 | 0;
      $667 = $666 + 1 | 0;
      if (($665 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $671 = ($657 - $664 | 0) / 24 | 0;
      if ($671 >>> 0 < 1073741823) {
       $673 = $671 << 1;
       $$0$i$i$i118 = $673 >>> 0 < $667 >>> 0 ? $667 : $673;
      } else $$0$i$i$i118 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i118, $666, $db + 12 | 0);
      $676 = $__v$i$i142 + 8 | 0;
      $677 = HEAP32[$676 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($677, $23);
      HEAP32[$676 >> 2] = $677 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($23);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 104:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($24, 14348);
     $680 = $db + 4 | 0;
     $681 = HEAP32[$680 >> 2] | 0;
     $683 = HEAP32[$db + 8 >> 2] | 0;
     if ($681 >>> 0 < $683 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($681, $24);
      HEAP32[$680 >> 2] = (HEAP32[$680 >> 2] | 0) + 24;
     } else {
      $690 = HEAP32[$db >> 2] | 0;
      $691 = $681 - $690 | 0;
      $692 = ($691 | 0) / 24 | 0;
      $693 = $692 + 1 | 0;
      if (($691 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $697 = ($683 - $690 | 0) / 24 | 0;
      if ($697 >>> 0 < 1073741823) {
       $699 = $697 << 1;
       $$0$i$i$i123 = $699 >>> 0 < $693 >>> 0 ? $693 : $699;
      } else $$0$i$i$i123 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i123, $692, $db + 12 | 0);
      $702 = $__v$i$i142 + 8 | 0;
      $703 = HEAP32[$702 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($703, $24);
      HEAP32[$702 >> 2] = $703 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($24);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 105:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($25, 14358);
     $706 = $db + 4 | 0;
     $707 = HEAP32[$706 >> 2] | 0;
     $709 = HEAP32[$db + 8 >> 2] | 0;
     if ($707 >>> 0 < $709 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($707, $25);
      HEAP32[$706 >> 2] = (HEAP32[$706 >> 2] | 0) + 24;
     } else {
      $716 = HEAP32[$db >> 2] | 0;
      $717 = $707 - $716 | 0;
      $718 = ($717 | 0) / 24 | 0;
      $719 = $718 + 1 | 0;
      if (($717 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $723 = ($709 - $716 | 0) / 24 | 0;
      if ($723 >>> 0 < 1073741823) {
       $725 = $723 << 1;
       $$0$i$i$i128 = $725 >>> 0 < $719 >>> 0 ? $719 : $725;
      } else $$0$i$i$i128 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i128, $718, $db + 12 | 0);
      $728 = $__v$i$i142 + 8 | 0;
      $729 = HEAP32[$728 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($729, $25);
      HEAP32[$728 >> 2] = $729 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 115:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($26, 14367);
     $732 = $db + 4 | 0;
     $733 = HEAP32[$732 >> 2] | 0;
     $735 = HEAP32[$db + 8 >> 2] | 0;
     if ($733 >>> 0 < $735 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($733, $26);
      HEAP32[$732 >> 2] = (HEAP32[$732 >> 2] | 0) + 24;
     } else {
      $742 = HEAP32[$db >> 2] | 0;
      $743 = $733 - $742 | 0;
      $744 = ($743 | 0) / 24 | 0;
      $745 = $744 + 1 | 0;
      if (($743 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $749 = ($735 - $742 | 0) / 24 | 0;
      if ($749 >>> 0 < 1073741823) {
       $751 = $749 << 1;
       $$0$i$i$i133 = $751 >>> 0 < $745 >>> 0 ? $745 : $751;
      } else $$0$i$i$i133 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i133, $744, $db + 12 | 0);
      $754 = $__v$i$i142 + 8 | 0;
      $755 = HEAP32[$754 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($755, $26);
      HEAP32[$754 >> 2] = $755 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($26);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 97:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($27, 14376);
     $758 = $db + 4 | 0;
     $759 = HEAP32[$758 >> 2] | 0;
     $761 = HEAP32[$db + 8 >> 2] | 0;
     if ($759 >>> 0 < $761 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($759, $27);
      HEAP32[$758 >> 2] = (HEAP32[$758 >> 2] | 0) + 24;
     } else {
      $768 = HEAP32[$db >> 2] | 0;
      $769 = $759 - $768 | 0;
      $770 = ($769 | 0) / 24 | 0;
      $771 = $770 + 1 | 0;
      if (($769 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $775 = ($761 - $768 | 0) / 24 | 0;
      if ($775 >>> 0 < 1073741823) {
       $777 = $775 << 1;
       $$0$i$i$i138 = $777 >>> 0 < $771 >>> 0 ? $771 : $777;
      } else $$0$i$i$i138 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i138, $770, $db + 12 | 0);
      $780 = $__v$i$i142 + 8 | 0;
      $781 = HEAP32[$780 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($781, $27);
      HEAP32[$780 >> 2] = $781 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($27);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   case 110:
    {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($28, 14381);
     $784 = $db + 4 | 0;
     $785 = HEAP32[$784 >> 2] | 0;
     $787 = HEAP32[$db + 8 >> 2] | 0;
     if ($785 >>> 0 < $787 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($785, $28);
      HEAP32[$784 >> 2] = (HEAP32[$784 >> 2] | 0) + 24;
     } else {
      $794 = HEAP32[$db >> 2] | 0;
      $795 = $785 - $794 | 0;
      $796 = ($795 | 0) / 24 | 0;
      $797 = $796 + 1 | 0;
      if (($795 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $801 = ($787 - $794 | 0) / 24 | 0;
      if ($801 >>> 0 < 1073741823) {
       $803 = $801 << 1;
       $$0$i$i$i143 = $803 >>> 0 < $797 >>> 0 ? $797 : $803;
      } else $$0$i$i$i143 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i142, $$0$i$i$i143, $796, $db + 12 | 0);
      $806 = $__v$i$i142 + 8 | 0;
      $807 = HEAP32[$806 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($807, $28);
      HEAP32[$806 >> 2] = $807 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i142);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i142);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($28);
     $$0 = $first + 2 | 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = $first;
     break L1;
    }
   }
   break;
  }
 default:
  {
   $$0 = $first;
   break L1;
  }
 } while (0); while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _malloc($bytes) {
 $bytes = $bytes | 0;
 var $$3$i = 0, $$lcssa = 0, $$lcssa211 = 0, $$lcssa215 = 0, $$lcssa216 = 0, $$lcssa217 = 0, $$lcssa219 = 0, $$lcssa222 = 0, $$lcssa224 = 0, $$lcssa226 = 0, $$lcssa228 = 0, $$lcssa230 = 0, $$lcssa232 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i23$iZ2D = 0, $$pre$phi$i26Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi58$i$iZ2D = 0, $$pre$phiZ2D = 0, $$rsize$3$i = 0, $$sum$i19$i = 0, $$sum2$i21$i = 0, $$sum3132$i$i = 0, $$sum67$i$i = 0, $100 = 0, $1000 = 0, $1002 = 0, $1005 = 0, $1010 = 0, $1016 = 0, $1019 = 0, $1020 = 0, $1027 = 0, $1039 = 0, $1044 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $106 = 0, $1060 = 0, $1062 = 0, $1063 = 0, $1070 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $117 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $127 = 0, $13 = 0, $132 = 0, $138 = 0, $14 = 0, $141 = 0, $144 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $151 = 0, $154 = 0, $156 = 0, $159 = 0, $16 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $17 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $201 = 0, $207 = 0, $214 = 0, $217 = 0, $225 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $236 = 0, $237 = 0, $245 = 0, $246 = 0, $247 = 0, $249 = 0, $25 = 0, $250 = 0, $255 = 0, $256 = 0, $259 = 0, $261 = 0, $264 = 0, $269 = 0, $276 = 0, $28 = 0, $285 = 0, $286 = 0, $290 = 0, $300 = 0, $303 = 0, $307 = 0, $309 = 0, $31 = 0, $310 = 0, $312 = 0, $314 = 0, $316 = 0, $318 = 0, $320 = 0, $322 = 0, $324 = 0, $334 = 0, $335 = 0, $337 = 0, $34 = 0, $346 = 0, $348 = 0, $351 = 0, $353 = 0, $356 = 0, $358 = 0, $361 = 0, $364 = 0, $365 = 0, $367 = 0, $368 = 0, $370 = 0, $371 = 0, $373 = 0, $374 = 0, $379 = 0, $38 = 0, $380 = 0, $389 = 0, $394 = 0, $398 = 0, $4 = 0, $404 = 0, $41 = 0, $411 = 0, $414 = 0, $422 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $431 = 0, $432 = 0, $438 = 0, $44 = 0, $443 = 0, $444 = 0, $447 = 0, $449 = 0, $452 = 0, $457 = 0, $46 = 0, $463 = 0, $467 = 0, $468 = 0, $47 = 0, $475 = 0, $487 = 0, $49 = 0, $492 = 0, $499 = 0, $5 = 0, $500 = 0, $501 = 0, $509 = 0, $51 = 0, $511 = 0, $512 = 0, $522 = 0, $526 = 0, $528 = 0, $529 = 0, $53 = 0, $538 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $552 = 0, $554 = 0, $555 = 0, $561 = 0, $563 = 0, $565 = 0, $57 = 0, $572 = 0, $574 = 0, $575 = 0, $576 = 0, $584 = 0, $585 = 0, $588 = 0, $59 = 0, $592 = 0, $593 = 0, $596 = 0, $598 = 0, $6 = 0, $602 = 0, $604 = 0, $608 = 0, $61 = 0, $612 = 0, $621 = 0, $622 = 0, $628 = 0, $630 = 0, $632 = 0, $635 = 0, $637 = 0, $64 = 0, $641 = 0, $642 = 0, $648 = 0, $65 = 0, $653 = 0, $655 = 0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $67 = 0, $676 = 0, $678 = 0, $68 = 0, $683 = 0, $685 = 0, $69 = 0, $690 = 0, $692 = 0, $7 = 0, $70 = 0, $702 = 0, $706 = 0, $711 = 0, $714 = 0, $719 = 0, $720 = 0, $724 = 0, $725 = 0, $730 = 0, $736 = 0, $741 = 0, $744 = 0, $745 = 0, $748 = 0, $750 = 0, $752 = 0, $755 = 0, $766 = 0, $77 = 0, $771 = 0, $773 = 0, $776 = 0, $778 = 0, $781 = 0, $784 = 0, $785 = 0, $787 = 0, $788 = 0, $790 = 0, $791 = 0, $793 = 0, $794 = 0, $799 = 0, $80 = 0, $800 = 0, $809 = 0, $81 = 0, $814 = 0, $818 = 0, $824 = 0, $832 = 0, $838 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $847 = 0, $848 = 0, $854 = 0, $859 = 0, $860 = 0, $863 = 0, $865 = 0, $868 = 0, $873 = 0, $879 = 0, $883 = 0, $884 = 0, $89 = 0, $891 = 0, $90 = 0, $903 = 0, $908 = 0, $91 = 0, $915 = 0, $916 = 0, $917 = 0, $92 = 0, $925 = 0, $928 = 0, $929 = 0, $93 = 0, $934 = 0, $94 = 0, $940 = 0, $941 = 0, $943 = 0, $944 = 0, $947 = 0, $95 = 0, $952 = 0, $954 = 0, $959 = 0, $960 = 0, $964 = 0, $970 = 0, $975 = 0, $977 = 0, $978 = 0, $979 = 0, $980 = 0, $984 = 0, $985 = 0, $99 = 0, $991 = 0, $996 = 0, $997 = 0, $F$0$i$i = 0, $F1$0$i = 0, $F4$0 = 0, $F4$0$i$i = 0, $F5$0$i = 0, $I1$0$i$i = 0, $I7$0$i = 0, $I7$0$i$i = 0, $K12$029$i = 0, $K2$07$i$i = 0, $K8$051$i$i = 0, $R$0$i = 0, $R$0$i$i = 0, $R$0$i$i$lcssa = 0, $R$0$i$lcssa = 0, $R$0$i18 = 0, $R$0$i18$lcssa = 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$i$i$lcssa = 0, $RP$0$i$lcssa = 0, $RP$0$i17 = 0, $RP$0$i17$lcssa = 0, $T$0$lcssa$i = 0, $T$0$lcssa$i$i = 0, $T$0$lcssa$i25$i = 0, $T$028$i = 0, $T$028$i$lcssa = 0, $T$050$i$i = 0, $T$050$i$i$lcssa = 0, $T$06$i$i = 0, $T$06$i$i$lcssa = 0, $br$0$ph$i = 0, $i$02$i$i = 0, $idx$0$i = 0, $mem$0 = 0, $nb$0 = 0, $oldfirst$0$i$i = 0, $qsize$0$i$i = 0, $rsize$0$i = 0, $rsize$0$i$lcssa = 0, $rsize$0$i15 = 0, $rsize$1$i = 0, $rsize$2$i = 0, $rsize$3$lcssa$i = 0, $rsize$331$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sizebits$0$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$084$i = 0, $sp$084$i$lcssa = 0, $sp$183$i = 0, $sp$183$i$lcssa = 0, $ssize$0$$i = 0, $ssize$0$i = 0, $ssize$1$ph$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$230$i = 0, $tbase$255$i = 0, $tsize$0$ph$i = 0, $tsize$0323944$i = 0, $tsize$1$i = 0, $tsize$254$i = 0, $v$0$i = 0, $v$0$i$lcssa = 0, $v$0$i16 = 0, $v$1$i = 0, $v$2$i = 0, $v$3$lcssa$i = 0, $v$3$ph$i = 0, $v$332$i = 0, label = 0, $964$looptemp = 0;
 do if ($bytes >>> 0 < 245) {
  $4 = $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8;
  $5 = $4 >>> 3;
  $6 = HEAP32[756] | 0;
  $7 = $6 >>> $5;
  if ($7 & 3) {
   $12 = ($7 & 1 ^ 1) + $5 | 0;
   $13 = $12 << 1;
   $14 = 3064 + ($13 << 2) | 0;
   $15 = 3064 + ($13 + 2 << 2) | 0;
   $16 = HEAP32[$15 >> 2] | 0;
   $17 = $16 + 8 | 0;
   $18 = HEAP32[$17 >> 2] | 0;
   do if (($14 | 0) == ($18 | 0)) HEAP32[756] = $6 & ~(1 << $12); else {
    if ($18 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $25 = $18 + 12 | 0;
    if ((HEAP32[$25 >> 2] | 0) == ($16 | 0)) {
     HEAP32[$25 >> 2] = $14;
     HEAP32[$15 >> 2] = $18;
     break;
    } else _abort();
   } while (0);
   $28 = $12 << 3;
   HEAP32[$16 + 4 >> 2] = $28 | 3;
   $31 = $16 + ($28 | 4) | 0;
   HEAP32[$31 >> 2] = HEAP32[$31 >> 2] | 1;
   $mem$0 = $17;
   return $mem$0 | 0;
  }
  $34 = HEAP32[758] | 0;
  if ($4 >>> 0 > $34 >>> 0) {
   if ($7) {
    $38 = 2 << $5;
    $41 = $7 << $5 & ($38 | 0 - $38);
    $44 = ($41 & 0 - $41) + -1 | 0;
    $46 = $44 >>> 12 & 16;
    $47 = $44 >>> $46;
    $49 = $47 >>> 5 & 8;
    $51 = $47 >>> $49;
    $53 = $51 >>> 2 & 4;
    $55 = $51 >>> $53;
    $57 = $55 >>> 1 & 2;
    $59 = $55 >>> $57;
    $61 = $59 >>> 1 & 1;
    $64 = ($49 | $46 | $53 | $57 | $61) + ($59 >>> $61) | 0;
    $65 = $64 << 1;
    $66 = 3064 + ($65 << 2) | 0;
    $67 = 3064 + ($65 + 2 << 2) | 0;
    $68 = HEAP32[$67 >> 2] | 0;
    $69 = $68 + 8 | 0;
    $70 = HEAP32[$69 >> 2] | 0;
    do if (($66 | 0) == ($70 | 0)) {
     HEAP32[756] = $6 & ~(1 << $64);
     $89 = $34;
    } else {
     if ($70 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
     $77 = $70 + 12 | 0;
     if ((HEAP32[$77 >> 2] | 0) == ($68 | 0)) {
      HEAP32[$77 >> 2] = $66;
      HEAP32[$67 >> 2] = $70;
      $89 = HEAP32[758] | 0;
      break;
     } else _abort();
    } while (0);
    $80 = $64 << 3;
    $81 = $80 - $4 | 0;
    HEAP32[$68 + 4 >> 2] = $4 | 3;
    $84 = $68 + $4 | 0;
    HEAP32[$68 + ($4 | 4) >> 2] = $81 | 1;
    HEAP32[$68 + $80 >> 2] = $81;
    if ($89) {
     $90 = HEAP32[761] | 0;
     $91 = $89 >>> 3;
     $92 = $91 << 1;
     $93 = 3064 + ($92 << 2) | 0;
     $94 = HEAP32[756] | 0;
     $95 = 1 << $91;
     if (!($94 & $95)) {
      HEAP32[756] = $94 | $95;
      $$pre$phiZ2D = 3064 + ($92 + 2 << 2) | 0;
      $F4$0 = $93;
     } else {
      $99 = 3064 + ($92 + 2 << 2) | 0;
      $100 = HEAP32[$99 >> 2] | 0;
      if ($100 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
       $$pre$phiZ2D = $99;
       $F4$0 = $100;
      }
     }
     HEAP32[$$pre$phiZ2D >> 2] = $90;
     HEAP32[$F4$0 + 12 >> 2] = $90;
     HEAP32[$90 + 8 >> 2] = $F4$0;
     HEAP32[$90 + 12 >> 2] = $93;
    }
    HEAP32[758] = $81;
    HEAP32[761] = $84;
    $mem$0 = $69;
    return $mem$0 | 0;
   }
   $106 = HEAP32[757] | 0;
   if (!$106) $nb$0 = $4; else {
    $110 = ($106 & 0 - $106) + -1 | 0;
    $112 = $110 >>> 12 & 16;
    $113 = $110 >>> $112;
    $115 = $113 >>> 5 & 8;
    $117 = $113 >>> $115;
    $119 = $117 >>> 2 & 4;
    $121 = $117 >>> $119;
    $123 = $121 >>> 1 & 2;
    $125 = $121 >>> $123;
    $127 = $125 >>> 1 & 1;
    $132 = HEAP32[3328 + (($115 | $112 | $119 | $123 | $127) + ($125 >>> $127) << 2) >> 2] | 0;
    $rsize$0$i = (HEAP32[$132 + 4 >> 2] & -8) - $4 | 0;
    $t$0$i = $132;
    $v$0$i = $132;
    while (1) {
     $138 = HEAP32[$t$0$i + 16 >> 2] | 0;
     if (!$138) {
      $141 = HEAP32[$t$0$i + 20 >> 2] | 0;
      if (!$141) {
       $rsize$0$i$lcssa = $rsize$0$i;
       $v$0$i$lcssa = $v$0$i;
       break;
      } else $144 = $141;
     } else $144 = $138;
     $147 = (HEAP32[$144 + 4 >> 2] & -8) - $4 | 0;
     $148 = $147 >>> 0 < $rsize$0$i >>> 0;
     $rsize$0$i = $148 ? $147 : $rsize$0$i;
     $t$0$i = $144;
     $v$0$i = $148 ? $144 : $v$0$i;
    }
    $149 = HEAP32[760] | 0;
    if ($v$0$i$lcssa >>> 0 < $149 >>> 0) _abort();
    $151 = $v$0$i$lcssa + $4 | 0;
    if ($v$0$i$lcssa >>> 0 >= $151 >>> 0) _abort();
    $154 = HEAP32[$v$0$i$lcssa + 24 >> 2] | 0;
    $156 = HEAP32[$v$0$i$lcssa + 12 >> 2] | 0;
    do if (($156 | 0) == ($v$0$i$lcssa | 0)) {
     $167 = $v$0$i$lcssa + 20 | 0;
     $168 = HEAP32[$167 >> 2] | 0;
     if (!$168) {
      $170 = $v$0$i$lcssa + 16 | 0;
      $171 = HEAP32[$170 >> 2] | 0;
      if (!$171) {
       $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;
      if ($174) {
       $R$0$i = $174;
       $RP$0$i = $173;
       continue;
      }
      $176 = $R$0$i + 16 | 0;
      $177 = HEAP32[$176 >> 2] | 0;
      if (!$177) {
       $R$0$i$lcssa = $R$0$i;
       $RP$0$i$lcssa = $RP$0$i;
       break;
      } else {
       $R$0$i = $177;
       $RP$0$i = $176;
      }
     }
     if ($RP$0$i$lcssa >>> 0 < $149 >>> 0) _abort(); else {
      HEAP32[$RP$0$i$lcssa >> 2] = 0;
      $R$1$i = $R$0$i$lcssa;
      break;
     }
    } else {
     $159 = HEAP32[$v$0$i$lcssa + 8 >> 2] | 0;
     if ($159 >>> 0 < $149 >>> 0) _abort();
     $161 = $159 + 12 | 0;
     if ((HEAP32[$161 >> 2] | 0) != ($v$0$i$lcssa | 0)) _abort();
     $164 = $156 + 8 | 0;
     if ((HEAP32[$164 >> 2] | 0) == ($v$0$i$lcssa | 0)) {
      HEAP32[$161 >> 2] = $156;
      HEAP32[$164 >> 2] = $159;
      $R$1$i = $156;
      break;
     } else _abort();
    } while (0);
    do if ($154) {
     $182 = HEAP32[$v$0$i$lcssa + 28 >> 2] | 0;
     $183 = 3328 + ($182 << 2) | 0;
     if (($v$0$i$lcssa | 0) == (HEAP32[$183 >> 2] | 0)) {
      HEAP32[$183 >> 2] = $R$1$i;
      if (!$R$1$i) {
       HEAP32[757] = HEAP32[757] & ~(1 << $182);
       break;
      }
     } else {
      if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
      $192 = $154 + 16 | 0;
      if ((HEAP32[$192 >> 2] | 0) == ($v$0$i$lcssa | 0)) HEAP32[$192 >> 2] = $R$1$i; else HEAP32[$154 + 20 >> 2] = $R$1$i;
      if (!$R$1$i) break;
     }
     $197 = HEAP32[760] | 0;
     if ($R$1$i >>> 0 < $197 >>> 0) _abort();
     HEAP32[$R$1$i + 24 >> 2] = $154;
     $201 = HEAP32[$v$0$i$lcssa + 16 >> 2] | 0;
     do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else {
      HEAP32[$R$1$i + 16 >> 2] = $201;
      HEAP32[$201 + 24 >> 2] = $R$1$i;
      break;
     } while (0);
     $207 = HEAP32[$v$0$i$lcssa + 20 >> 2] | 0;
     if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
      HEAP32[$R$1$i + 20 >> 2] = $207;
      HEAP32[$207 + 24 >> 2] = $R$1$i;
      break;
     }
    } while (0);
    if ($rsize$0$i$lcssa >>> 0 < 16) {
     $214 = $rsize$0$i$lcssa + $4 | 0;
     HEAP32[$v$0$i$lcssa + 4 >> 2] = $214 | 3;
     $217 = $v$0$i$lcssa + ($214 + 4) | 0;
     HEAP32[$217 >> 2] = HEAP32[$217 >> 2] | 1;
    } else {
     HEAP32[$v$0$i$lcssa + 4 >> 2] = $4 | 3;
     HEAP32[$v$0$i$lcssa + ($4 | 4) >> 2] = $rsize$0$i$lcssa | 1;
     HEAP32[$v$0$i$lcssa + ($rsize$0$i$lcssa + $4) >> 2] = $rsize$0$i$lcssa;
     $225 = HEAP32[758] | 0;
     if ($225) {
      $227 = HEAP32[761] | 0;
      $228 = $225 >>> 3;
      $229 = $228 << 1;
      $230 = 3064 + ($229 << 2) | 0;
      $231 = HEAP32[756] | 0;
      $232 = 1 << $228;
      if (!($231 & $232)) {
       HEAP32[756] = $231 | $232;
       $$pre$phi$iZ2D = 3064 + ($229 + 2 << 2) | 0;
       $F1$0$i = $230;
      } else {
       $236 = 3064 + ($229 + 2 << 2) | 0;
       $237 = HEAP32[$236 >> 2] | 0;
       if ($237 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
        $$pre$phi$iZ2D = $236;
        $F1$0$i = $237;
       }
      }
      HEAP32[$$pre$phi$iZ2D >> 2] = $227;
      HEAP32[$F1$0$i + 12 >> 2] = $227;
      HEAP32[$227 + 8 >> 2] = $F1$0$i;
      HEAP32[$227 + 12 >> 2] = $230;
     }
     HEAP32[758] = $rsize$0$i$lcssa;
     HEAP32[761] = $151;
    }
    $mem$0 = $v$0$i$lcssa + 8 | 0;
    return $mem$0 | 0;
   }
  } else $nb$0 = $4;
 } else if ($bytes >>> 0 > 4294967231) $nb$0 = -1; else {
  $245 = $bytes + 11 | 0;
  $246 = $245 & -8;
  $247 = HEAP32[757] | 0;
  if (!$247) $nb$0 = $246; else {
   $249 = 0 - $246 | 0;
   $250 = $245 >>> 8;
   if (!$250) $idx$0$i = 0; else if ($246 >>> 0 > 16777215) $idx$0$i = 31; else {
    $255 = ($250 + 1048320 | 0) >>> 16 & 8;
    $256 = $250 << $255;
    $259 = ($256 + 520192 | 0) >>> 16 & 4;
    $261 = $256 << $259;
    $264 = ($261 + 245760 | 0) >>> 16 & 2;
    $269 = 14 - ($259 | $255 | $264) + ($261 << $264 >>> 15) | 0;
    $idx$0$i = $246 >>> ($269 + 7 | 0) & 1 | $269 << 1;
   }
   $276 = HEAP32[3328 + ($idx$0$i << 2) >> 2] | 0;
   L123 : do if (!$276) {
    $rsize$2$i = $249;
    $t$1$i = 0;
    $v$2$i = 0;
    label = 86;
   } else {
    $rsize$0$i15 = $249;
    $rst$0$i = 0;
    $sizebits$0$i = $246 << (($idx$0$i | 0) == 31 ? 0 : 25 - ($idx$0$i >>> 1) | 0);
    $t$0$i14 = $276;
    $v$0$i16 = 0;
    while (1) {
     $285 = HEAP32[$t$0$i14 + 4 >> 2] & -8;
     $286 = $285 - $246 | 0;
     if ($286 >>> 0 < $rsize$0$i15 >>> 0) if (($285 | 0) == ($246 | 0)) {
      $rsize$331$i = $286;
      $t$230$i = $t$0$i14;
      $v$332$i = $t$0$i14;
      label = 90;
      break L123;
     } else {
      $rsize$1$i = $286;
      $v$1$i = $t$0$i14;
     } else {
      $rsize$1$i = $rsize$0$i15;
      $v$1$i = $v$0$i16;
     }
     $290 = HEAP32[$t$0$i14 + 20 >> 2] | 0;
     $t$0$i14 = HEAP32[$t$0$i14 + 16 + ($sizebits$0$i >>> 31 << 2) >> 2] | 0;
     $rst$1$i = ($290 | 0) == 0 | ($290 | 0) == ($t$0$i14 | 0) ? $rst$0$i : $290;
     if (!$t$0$i14) {
      $rsize$2$i = $rsize$1$i;
      $t$1$i = $rst$1$i;
      $v$2$i = $v$1$i;
      label = 86;
      break;
     } else {
      $rsize$0$i15 = $rsize$1$i;
      $rst$0$i = $rst$1$i;
      $sizebits$0$i = $sizebits$0$i << 1;
      $v$0$i16 = $v$1$i;
     }
    }
   } while (0);
   if ((label | 0) == 86) {
    if (($t$1$i | 0) == 0 & ($v$2$i | 0) == 0) {
     $300 = 2 << $idx$0$i;
     $303 = $247 & ($300 | 0 - $300);
     if (!$303) {
      $nb$0 = $246;
      break;
     }
     $307 = ($303 & 0 - $303) + -1 | 0;
     $309 = $307 >>> 12 & 16;
     $310 = $307 >>> $309;
     $312 = $310 >>> 5 & 8;
     $314 = $310 >>> $312;
     $316 = $314 >>> 2 & 4;
     $318 = $314 >>> $316;
     $320 = $318 >>> 1 & 2;
     $322 = $318 >>> $320;
     $324 = $322 >>> 1 & 1;
     $t$2$ph$i = HEAP32[3328 + (($312 | $309 | $316 | $320 | $324) + ($322 >>> $324) << 2) >> 2] | 0;
     $v$3$ph$i = 0;
    } else {
     $t$2$ph$i = $t$1$i;
     $v$3$ph$i = $v$2$i;
    }
    if (!$t$2$ph$i) {
     $rsize$3$lcssa$i = $rsize$2$i;
     $v$3$lcssa$i = $v$3$ph$i;
    } else {
     $rsize$331$i = $rsize$2$i;
     $t$230$i = $t$2$ph$i;
     $v$332$i = $v$3$ph$i;
     label = 90;
    }
   }
   if ((label | 0) == 90) while (1) {
    label = 0;
    $334 = (HEAP32[$t$230$i + 4 >> 2] & -8) - $246 | 0;
    $335 = $334 >>> 0 < $rsize$331$i >>> 0;
    $$rsize$3$i = $335 ? $334 : $rsize$331$i;
    $t$2$v$3$i = $335 ? $t$230$i : $v$332$i;
    $337 = HEAP32[$t$230$i + 16 >> 2] | 0;
    if ($337) {
     $rsize$331$i = $$rsize$3$i;
     $t$230$i = $337;
     $v$332$i = $t$2$v$3$i;
     label = 90;
     continue;
    }
    $t$230$i = HEAP32[$t$230$i + 20 >> 2] | 0;
    if (!$t$230$i) {
     $rsize$3$lcssa$i = $$rsize$3$i;
     $v$3$lcssa$i = $t$2$v$3$i;
     break;
    } else {
     $rsize$331$i = $$rsize$3$i;
     $v$332$i = $t$2$v$3$i;
     label = 90;
    }
   }
   if (!$v$3$lcssa$i) $nb$0 = $246; else if ($rsize$3$lcssa$i >>> 0 < ((HEAP32[758] | 0) - $246 | 0) >>> 0) {
    $346 = HEAP32[760] | 0;
    if ($v$3$lcssa$i >>> 0 < $346 >>> 0) _abort();
    $348 = $v$3$lcssa$i + $246 | 0;
    if ($v$3$lcssa$i >>> 0 >= $348 >>> 0) _abort();
    $351 = HEAP32[$v$3$lcssa$i + 24 >> 2] | 0;
    $353 = HEAP32[$v$3$lcssa$i + 12 >> 2] | 0;
    do if (($353 | 0) == ($v$3$lcssa$i | 0)) {
     $364 = $v$3$lcssa$i + 20 | 0;
     $365 = HEAP32[$364 >> 2] | 0;
     if (!$365) {
      $367 = $v$3$lcssa$i + 16 | 0;
      $368 = HEAP32[$367 >> 2] | 0;
      if (!$368) {
       $R$1$i20 = 0;
       break;
      } else {
       $R$0$i18 = $368;
       $RP$0$i17 = $367;
      }
     } else {
      $R$0$i18 = $365;
      $RP$0$i17 = $364;
     }
     while (1) {
      $370 = $R$0$i18 + 20 | 0;
      $371 = HEAP32[$370 >> 2] | 0;
      if ($371) {
       $R$0$i18 = $371;
       $RP$0$i17 = $370;
       continue;
      }
      $373 = $R$0$i18 + 16 | 0;
      $374 = HEAP32[$373 >> 2] | 0;
      if (!$374) {
       $R$0$i18$lcssa = $R$0$i18;
       $RP$0$i17$lcssa = $RP$0$i17;
       break;
      } else {
       $R$0$i18 = $374;
       $RP$0$i17 = $373;
      }
     }
     if ($RP$0$i17$lcssa >>> 0 < $346 >>> 0) _abort(); else {
      HEAP32[$RP$0$i17$lcssa >> 2] = 0;
      $R$1$i20 = $R$0$i18$lcssa;
      break;
     }
    } else {
     $356 = HEAP32[$v$3$lcssa$i + 8 >> 2] | 0;
     if ($356 >>> 0 < $346 >>> 0) _abort();
     $358 = $356 + 12 | 0;
     if ((HEAP32[$358 >> 2] | 0) != ($v$3$lcssa$i | 0)) _abort();
     $361 = $353 + 8 | 0;
     if ((HEAP32[$361 >> 2] | 0) == ($v$3$lcssa$i | 0)) {
      HEAP32[$358 >> 2] = $353;
      HEAP32[$361 >> 2] = $356;
      $R$1$i20 = $353;
      break;
     } else _abort();
    } while (0);
    do if ($351) {
     $379 = HEAP32[$v$3$lcssa$i + 28 >> 2] | 0;
     $380 = 3328 + ($379 << 2) | 0;
     if (($v$3$lcssa$i | 0) == (HEAP32[$380 >> 2] | 0)) {
      HEAP32[$380 >> 2] = $R$1$i20;
      if (!$R$1$i20) {
       HEAP32[757] = HEAP32[757] & ~(1 << $379);
       break;
      }
     } else {
      if ($351 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
      $389 = $351 + 16 | 0;
      if ((HEAP32[$389 >> 2] | 0) == ($v$3$lcssa$i | 0)) HEAP32[$389 >> 2] = $R$1$i20; else HEAP32[$351 + 20 >> 2] = $R$1$i20;
      if (!$R$1$i20) break;
     }
     $394 = HEAP32[760] | 0;
     if ($R$1$i20 >>> 0 < $394 >>> 0) _abort();
     HEAP32[$R$1$i20 + 24 >> 2] = $351;
     $398 = HEAP32[$v$3$lcssa$i + 16 >> 2] | 0;
     do if ($398) if ($398 >>> 0 < $394 >>> 0) _abort(); else {
      HEAP32[$R$1$i20 + 16 >> 2] = $398;
      HEAP32[$398 + 24 >> 2] = $R$1$i20;
      break;
     } while (0);
     $404 = HEAP32[$v$3$lcssa$i + 20 >> 2] | 0;
     if ($404) if ($404 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
      HEAP32[$R$1$i20 + 20 >> 2] = $404;
      HEAP32[$404 + 24 >> 2] = $R$1$i20;
      break;
     }
    } while (0);
    L199 : do if ($rsize$3$lcssa$i >>> 0 < 16) {
     $411 = $rsize$3$lcssa$i + $246 | 0;
     HEAP32[$v$3$lcssa$i + 4 >> 2] = $411 | 3;
     $414 = $v$3$lcssa$i + ($411 + 4) | 0;
     HEAP32[$414 >> 2] = HEAP32[$414 >> 2] | 1;
    } else {
     HEAP32[$v$3$lcssa$i + 4 >> 2] = $246 | 3;
     HEAP32[$v$3$lcssa$i + ($246 | 4) >> 2] = $rsize$3$lcssa$i | 1;
     HEAP32[$v$3$lcssa$i + ($rsize$3$lcssa$i + $246) >> 2] = $rsize$3$lcssa$i;
     $422 = $rsize$3$lcssa$i >>> 3;
     if ($rsize$3$lcssa$i >>> 0 < 256) {
      $424 = $422 << 1;
      $425 = 3064 + ($424 << 2) | 0;
      $426 = HEAP32[756] | 0;
      $427 = 1 << $422;
      if (!($426 & $427)) {
       HEAP32[756] = $426 | $427;
       $$pre$phi$i26Z2D = 3064 + ($424 + 2 << 2) | 0;
       $F5$0$i = $425;
      } else {
       $431 = 3064 + ($424 + 2 << 2) | 0;
       $432 = HEAP32[$431 >> 2] | 0;
       if ($432 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
        $$pre$phi$i26Z2D = $431;
        $F5$0$i = $432;
       }
      }
      HEAP32[$$pre$phi$i26Z2D >> 2] = $348;
      HEAP32[$F5$0$i + 12 >> 2] = $348;
      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $F5$0$i;
      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $425;
      break;
     }
     $438 = $rsize$3$lcssa$i >>> 8;
     if (!$438) $I7$0$i = 0; else if ($rsize$3$lcssa$i >>> 0 > 16777215) $I7$0$i = 31; else {
      $443 = ($438 + 1048320 | 0) >>> 16 & 8;
      $444 = $438 << $443;
      $447 = ($444 + 520192 | 0) >>> 16 & 4;
      $449 = $444 << $447;
      $452 = ($449 + 245760 | 0) >>> 16 & 2;
      $457 = 14 - ($447 | $443 | $452) + ($449 << $452 >>> 15) | 0;
      $I7$0$i = $rsize$3$lcssa$i >>> ($457 + 7 | 0) & 1 | $457 << 1;
     }
     $463 = 3328 + ($I7$0$i << 2) | 0;
     HEAP32[$v$3$lcssa$i + ($246 + 28) >> 2] = $I7$0$i;
     HEAP32[$v$3$lcssa$i + ($246 + 20) >> 2] = 0;
     HEAP32[$v$3$lcssa$i + ($246 + 16) >> 2] = 0;
     $467 = HEAP32[757] | 0;
     $468 = 1 << $I7$0$i;
     if (!($467 & $468)) {
      HEAP32[757] = $467 | $468;
      HEAP32[$463 >> 2] = $348;
      HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $463;
      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348;
      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348;
      break;
     }
     $475 = HEAP32[$463 >> 2] | 0;
     L217 : do if ((HEAP32[$475 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) $T$0$lcssa$i = $475; else {
      $K12$029$i = $rsize$3$lcssa$i << (($I7$0$i | 0) == 31 ? 0 : 25 - ($I7$0$i >>> 1) | 0);
      $T$028$i = $475;
      while (1) {
       $492 = $T$028$i + 16 + ($K12$029$i >>> 31 << 2) | 0;
       $487 = HEAP32[$492 >> 2] | 0;
       if (!$487) {
        $$lcssa232 = $492;
        $T$028$i$lcssa = $T$028$i;
        break;
       }
       if ((HEAP32[$487 + 4 >> 2] & -8 | 0) == ($rsize$3$lcssa$i | 0)) {
        $T$0$lcssa$i = $487;
        break L217;
       } else {
        $K12$029$i = $K12$029$i << 1;
        $T$028$i = $487;
       }
      }
      if ($$lcssa232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
       HEAP32[$$lcssa232 >> 2] = $348;
       HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = $T$028$i$lcssa;
       HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $348;
       HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $348;
       break L199;
      }
     } while (0);
     $499 = $T$0$lcssa$i + 8 | 0;
     $500 = HEAP32[$499 >> 2] | 0;
     $501 = HEAP32[760] | 0;
     if ($500 >>> 0 >= $501 >>> 0 & $T$0$lcssa$i >>> 0 >= $501 >>> 0) {
      HEAP32[$500 + 12 >> 2] = $348;
      HEAP32[$499 >> 2] = $348;
      HEAP32[$v$3$lcssa$i + ($246 + 8) >> 2] = $500;
      HEAP32[$v$3$lcssa$i + ($246 + 12) >> 2] = $T$0$lcssa$i;
      HEAP32[$v$3$lcssa$i + ($246 + 24) >> 2] = 0;
      break;
     } else _abort();
    } while (0);
    $mem$0 = $v$3$lcssa$i + 8 | 0;
    return $mem$0 | 0;
   } else $nb$0 = $246;
  }
 } while (0);
 $509 = HEAP32[758] | 0;
 if ($509 >>> 0 >= $nb$0 >>> 0) {
  $511 = $509 - $nb$0 | 0;
  $512 = HEAP32[761] | 0;
  if ($511 >>> 0 > 15) {
   HEAP32[761] = $512 + $nb$0;
   HEAP32[758] = $511;
   HEAP32[$512 + ($nb$0 + 4) >> 2] = $511 | 1;
   HEAP32[$512 + $509 >> 2] = $511;
   HEAP32[$512 + 4 >> 2] = $nb$0 | 3;
  } else {
   HEAP32[758] = 0;
   HEAP32[761] = 0;
   HEAP32[$512 + 4 >> 2] = $509 | 3;
   $522 = $512 + ($509 + 4) | 0;
   HEAP32[$522 >> 2] = HEAP32[$522 >> 2] | 1;
  }
  $mem$0 = $512 + 8 | 0;
  return $mem$0 | 0;
 }
 $526 = HEAP32[759] | 0;
 if ($526 >>> 0 > $nb$0 >>> 0) {
  $528 = $526 - $nb$0 | 0;
  HEAP32[759] = $528;
  $529 = HEAP32[762] | 0;
  HEAP32[762] = $529 + $nb$0;
  HEAP32[$529 + ($nb$0 + 4) >> 2] = $528 | 1;
  HEAP32[$529 + 4 >> 2] = $nb$0 | 3;
  $mem$0 = $529 + 8 | 0;
  return $mem$0 | 0;
 }
 do if (!(HEAP32[874] | 0)) {
  $538 = _sysconf(30) | 0;
  if (!($538 + -1 & $538)) {
   HEAP32[876] = $538;
   HEAP32[875] = $538;
   HEAP32[877] = -1;
   HEAP32[878] = -1;
   HEAP32[879] = 0;
   HEAP32[867] = 0;
   $544 = (_time(0) | 0) & -16 ^ 1431655768;
   HEAP32[874] = $544;
   break;
  } else _abort();
 } while (0);
 $545 = $nb$0 + 48 | 0;
 $546 = HEAP32[876] | 0;
 $547 = $nb$0 + 47 | 0;
 $548 = $546 + $547 | 0;
 $549 = 0 - $546 | 0;
 $550 = $548 & $549;
 if ($550 >>> 0 <= $nb$0 >>> 0) {
  $mem$0 = 0;
  return $mem$0 | 0;
 }
 $552 = HEAP32[866] | 0;
 if ($552) {
  $554 = HEAP32[864] | 0;
  $555 = $554 + $550 | 0;
  if ($555 >>> 0 <= $554 >>> 0 | $555 >>> 0 > $552 >>> 0) {
   $mem$0 = 0;
   return $mem$0 | 0;
  }
 }
 L258 : do if (!(HEAP32[867] & 4)) {
  $561 = HEAP32[762] | 0;
  L260 : do if (!$561) label = 174; else {
   $sp$0$i$i = 3472;
   while (1) {
    $563 = HEAP32[$sp$0$i$i >> 2] | 0;
    if ($563 >>> 0 <= $561 >>> 0) {
     $565 = $sp$0$i$i + 4 | 0;
     if (($563 + (HEAP32[$565 >> 2] | 0) | 0) >>> 0 > $561 >>> 0) {
      $$lcssa228 = $sp$0$i$i;
      $$lcssa230 = $565;
      break;
     }
    }
    $sp$0$i$i = HEAP32[$sp$0$i$i + 8 >> 2] | 0;
    if (!$sp$0$i$i) {
     label = 174;
     break L260;
    }
   }
   $596 = $548 - (HEAP32[759] | 0) & $549;
   if ($596 >>> 0 < 2147483647) {
    $598 = _sbrk($596 | 0) | 0;
    $602 = ($598 | 0) == ((HEAP32[$$lcssa228 >> 2] | 0) + (HEAP32[$$lcssa230 >> 2] | 0) | 0);
    $$3$i = $602 ? $596 : 0;
    if ($602) if (($598 | 0) == (-1 | 0)) $tsize$0323944$i = $$3$i; else {
     $tbase$255$i = $598;
     $tsize$254$i = $$3$i;
     label = 194;
     break L258;
    } else {
     $br$0$ph$i = $598;
     $ssize$1$ph$i = $596;
     $tsize$0$ph$i = $$3$i;
     label = 184;
    }
   } else $tsize$0323944$i = 0;
  } while (0);
  do if ((label | 0) == 174) {
   $572 = _sbrk(0) | 0;
   if (($572 | 0) == (-1 | 0)) $tsize$0323944$i = 0; else {
    $574 = $572;
    $575 = HEAP32[875] | 0;
    $576 = $575 + -1 | 0;
    if (!($576 & $574)) $ssize$0$i = $550; else $ssize$0$i = $550 - $574 + ($576 + $574 & 0 - $575) | 0;
    $584 = HEAP32[864] | 0;
    $585 = $584 + $ssize$0$i | 0;
    if ($ssize$0$i >>> 0 > $nb$0 >>> 0 & $ssize$0$i >>> 0 < 2147483647) {
     $588 = HEAP32[866] | 0;
     if ($588) if ($585 >>> 0 <= $584 >>> 0 | $585 >>> 0 > $588 >>> 0) {
      $tsize$0323944$i = 0;
      break;
     }
     $592 = _sbrk($ssize$0$i | 0) | 0;
     $593 = ($592 | 0) == ($572 | 0);
     $ssize$0$$i = $593 ? $ssize$0$i : 0;
     if ($593) {
      $tbase$255$i = $572;
      $tsize$254$i = $ssize$0$$i;
      label = 194;
      break L258;
     } else {
      $br$0$ph$i = $592;
      $ssize$1$ph$i = $ssize$0$i;
      $tsize$0$ph$i = $ssize$0$$i;
      label = 184;
     }
    } else $tsize$0323944$i = 0;
   }
  } while (0);
  L280 : do if ((label | 0) == 184) {
   $604 = 0 - $ssize$1$ph$i | 0;
   do if ($545 >>> 0 > $ssize$1$ph$i >>> 0 & ($ssize$1$ph$i >>> 0 < 2147483647 & ($br$0$ph$i | 0) != (-1 | 0))) {
    $608 = HEAP32[876] | 0;
    $612 = $547 - $ssize$1$ph$i + $608 & 0 - $608;
    if ($612 >>> 0 < 2147483647) if ((_sbrk($612 | 0) | 0) == (-1 | 0)) {
     _sbrk($604 | 0) | 0;
     $tsize$0323944$i = $tsize$0$ph$i;
     break L280;
    } else {
     $ssize$2$i = $612 + $ssize$1$ph$i | 0;
     break;
    } else $ssize$2$i = $ssize$1$ph$i;
   } else $ssize$2$i = $ssize$1$ph$i; while (0);
   if (($br$0$ph$i | 0) == (-1 | 0)) $tsize$0323944$i = $tsize$0$ph$i; else {
    $tbase$255$i = $br$0$ph$i;
    $tsize$254$i = $ssize$2$i;
    label = 194;
    break L258;
   }
  } while (0);
  HEAP32[867] = HEAP32[867] | 4;
  $tsize$1$i = $tsize$0323944$i;
  label = 191;
 } else {
  $tsize$1$i = 0;
  label = 191;
 } while (0);
 if ((label | 0) == 191) if ($550 >>> 0 < 2147483647) {
  $621 = _sbrk($550 | 0) | 0;
  $622 = _sbrk(0) | 0;
  if ($621 >>> 0 < $622 >>> 0 & (($621 | 0) != (-1 | 0) & ($622 | 0) != (-1 | 0))) {
   $628 = $622 - $621 | 0;
   $630 = $628 >>> 0 > ($nb$0 + 40 | 0) >>> 0;
   if ($630) {
    $tbase$255$i = $621;
    $tsize$254$i = $630 ? $628 : $tsize$1$i;
    label = 194;
   }
  }
 }
 if ((label | 0) == 194) {
  $632 = (HEAP32[864] | 0) + $tsize$254$i | 0;
  HEAP32[864] = $632;
  if ($632 >>> 0 > (HEAP32[865] | 0) >>> 0) HEAP32[865] = $632;
  $635 = HEAP32[762] | 0;
  L299 : do if (!$635) {
   $637 = HEAP32[760] | 0;
   if (($637 | 0) == 0 | $tbase$255$i >>> 0 < $637 >>> 0) HEAP32[760] = $tbase$255$i;
   HEAP32[868] = $tbase$255$i;
   HEAP32[869] = $tsize$254$i;
   HEAP32[871] = 0;
   HEAP32[765] = HEAP32[874];
   HEAP32[764] = -1;
   $i$02$i$i = 0;
   do {
    $641 = $i$02$i$i << 1;
    $642 = 3064 + ($641 << 2) | 0;
    HEAP32[3064 + ($641 + 3 << 2) >> 2] = $642;
    HEAP32[3064 + ($641 + 2 << 2) >> 2] = $642;
    $i$02$i$i = $i$02$i$i + 1 | 0;
   } while (($i$02$i$i | 0) != 32);
   $648 = $tbase$255$i + 8 | 0;
   $653 = ($648 & 7 | 0) == 0 ? 0 : 0 - $648 & 7;
   $655 = $tsize$254$i + -40 - $653 | 0;
   HEAP32[762] = $tbase$255$i + $653;
   HEAP32[759] = $655;
   HEAP32[$tbase$255$i + ($653 + 4) >> 2] = $655 | 1;
   HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40;
   HEAP32[763] = HEAP32[878];
  } else {
   $sp$084$i = 3472;
   do {
    $660 = HEAP32[$sp$084$i >> 2] | 0;
    $661 = $sp$084$i + 4 | 0;
    $662 = HEAP32[$661 >> 2] | 0;
    if (($tbase$255$i | 0) == ($660 + $662 | 0)) {
     $$lcssa222 = $660;
     $$lcssa224 = $661;
     $$lcssa226 = $662;
     $sp$084$i$lcssa = $sp$084$i;
     label = 204;
     break;
    }
    $sp$084$i = HEAP32[$sp$084$i + 8 >> 2] | 0;
   } while (($sp$084$i | 0) != 0);
   if ((label | 0) == 204) if (!(HEAP32[$sp$084$i$lcssa + 12 >> 2] & 8)) if ($635 >>> 0 < $tbase$255$i >>> 0 & $635 >>> 0 >= $$lcssa222 >>> 0) {
    HEAP32[$$lcssa224 >> 2] = $$lcssa226 + $tsize$254$i;
    $676 = (HEAP32[759] | 0) + $tsize$254$i | 0;
    $678 = $635 + 8 | 0;
    $683 = ($678 & 7 | 0) == 0 ? 0 : 0 - $678 & 7;
    $685 = $676 - $683 | 0;
    HEAP32[762] = $635 + $683;
    HEAP32[759] = $685;
    HEAP32[$635 + ($683 + 4) >> 2] = $685 | 1;
    HEAP32[$635 + ($676 + 4) >> 2] = 40;
    HEAP32[763] = HEAP32[878];
    break;
   }
   $690 = HEAP32[760] | 0;
   if ($tbase$255$i >>> 0 < $690 >>> 0) {
    HEAP32[760] = $tbase$255$i;
    $755 = $tbase$255$i;
   } else $755 = $690;
   $692 = $tbase$255$i + $tsize$254$i | 0;
   $sp$183$i = 3472;
   while (1) {
    if ((HEAP32[$sp$183$i >> 2] | 0) == ($692 | 0)) {
     $$lcssa219 = $sp$183$i;
     $sp$183$i$lcssa = $sp$183$i;
     label = 212;
     break;
    }
    $sp$183$i = HEAP32[$sp$183$i + 8 >> 2] | 0;
    if (!$sp$183$i) {
     $sp$0$i$i$i = 3472;
     break;
    }
   }
   if ((label | 0) == 212) if (!(HEAP32[$sp$183$i$lcssa + 12 >> 2] & 8)) {
    HEAP32[$$lcssa219 >> 2] = $tbase$255$i;
    $702 = $sp$183$i$lcssa + 4 | 0;
    HEAP32[$702 >> 2] = (HEAP32[$702 >> 2] | 0) + $tsize$254$i;
    $706 = $tbase$255$i + 8 | 0;
    $711 = ($706 & 7 | 0) == 0 ? 0 : 0 - $706 & 7;
    $714 = $tbase$255$i + ($tsize$254$i + 8) | 0;
    $719 = ($714 & 7 | 0) == 0 ? 0 : 0 - $714 & 7;
    $720 = $tbase$255$i + ($719 + $tsize$254$i) | 0;
    $$sum$i19$i = $711 + $nb$0 | 0;
    $724 = $tbase$255$i + $$sum$i19$i | 0;
    $725 = $720 - ($tbase$255$i + $711) - $nb$0 | 0;
    HEAP32[$tbase$255$i + ($711 + 4) >> 2] = $nb$0 | 3;
    L324 : do if (($720 | 0) == ($635 | 0)) {
     $730 = (HEAP32[759] | 0) + $725 | 0;
     HEAP32[759] = $730;
     HEAP32[762] = $724;
     HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $730 | 1;
    } else {
     if (($720 | 0) == (HEAP32[761] | 0)) {
      $736 = (HEAP32[758] | 0) + $725 | 0;
      HEAP32[758] = $736;
      HEAP32[761] = $724;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $736 | 1;
      HEAP32[$tbase$255$i + ($736 + $$sum$i19$i) >> 2] = $736;
      break;
     }
     $$sum2$i21$i = $tsize$254$i + 4 | 0;
     $741 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $719) >> 2] | 0;
     if (($741 & 3 | 0) == 1) {
      $744 = $741 & -8;
      $745 = $741 >>> 3;
      L332 : do if ($741 >>> 0 < 256) {
       $748 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0;
       $750 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0;
       $752 = 3064 + ($745 << 1 << 2) | 0;
       do if (($748 | 0) != ($752 | 0)) {
        if ($748 >>> 0 < $755 >>> 0) _abort();
        if ((HEAP32[$748 + 12 >> 2] | 0) == ($720 | 0)) break;
        _abort();
       } while (0);
       if (($750 | 0) == ($748 | 0)) {
        HEAP32[756] = HEAP32[756] & ~(1 << $745);
        break;
       }
       do if (($750 | 0) == ($752 | 0)) $$pre$phi58$i$iZ2D = $750 + 8 | 0; else {
        if ($750 >>> 0 < $755 >>> 0) _abort();
        $766 = $750 + 8 | 0;
        if ((HEAP32[$766 >> 2] | 0) == ($720 | 0)) {
         $$pre$phi58$i$iZ2D = $766;
         break;
        }
        _abort();
       } while (0);
       HEAP32[$748 + 12 >> 2] = $750;
       HEAP32[$$pre$phi58$i$iZ2D >> 2] = $748;
      } else {
       $771 = HEAP32[$tbase$255$i + (($719 | 24) + $tsize$254$i) >> 2] | 0;
       $773 = HEAP32[$tbase$255$i + ($tsize$254$i + 12 + $719) >> 2] | 0;
       do if (($773 | 0) == ($720 | 0)) {
        $$sum67$i$i = $719 | 16;
        $784 = $tbase$255$i + ($$sum2$i21$i + $$sum67$i$i) | 0;
        $785 = HEAP32[$784 >> 2] | 0;
        if (!$785) {
         $787 = $tbase$255$i + ($$sum67$i$i + $tsize$254$i) | 0;
         $788 = HEAP32[$787 >> 2] | 0;
         if (!$788) {
          $R$1$i$i = 0;
          break;
         } else {
          $R$0$i$i = $788;
          $RP$0$i$i = $787;
         }
        } else {
         $R$0$i$i = $785;
         $RP$0$i$i = $784;
        }
        while (1) {
         $790 = $R$0$i$i + 20 | 0;
         $791 = HEAP32[$790 >> 2] | 0;
         if ($791) {
          $R$0$i$i = $791;
          $RP$0$i$i = $790;
          continue;
         }
         $793 = $R$0$i$i + 16 | 0;
         $794 = HEAP32[$793 >> 2] | 0;
         if (!$794) {
          $R$0$i$i$lcssa = $R$0$i$i;
          $RP$0$i$i$lcssa = $RP$0$i$i;
          break;
         } else {
          $R$0$i$i = $794;
          $RP$0$i$i = $793;
         }
        }
        if ($RP$0$i$i$lcssa >>> 0 < $755 >>> 0) _abort(); else {
         HEAP32[$RP$0$i$i$lcssa >> 2] = 0;
         $R$1$i$i = $R$0$i$i$lcssa;
         break;
        }
       } else {
        $776 = HEAP32[$tbase$255$i + (($719 | 8) + $tsize$254$i) >> 2] | 0;
        if ($776 >>> 0 < $755 >>> 0) _abort();
        $778 = $776 + 12 | 0;
        if ((HEAP32[$778 >> 2] | 0) != ($720 | 0)) _abort();
        $781 = $773 + 8 | 0;
        if ((HEAP32[$781 >> 2] | 0) == ($720 | 0)) {
         HEAP32[$778 >> 2] = $773;
         HEAP32[$781 >> 2] = $776;
         $R$1$i$i = $773;
         break;
        } else _abort();
       } while (0);
       if (!$771) break;
       $799 = HEAP32[$tbase$255$i + ($tsize$254$i + 28 + $719) >> 2] | 0;
       $800 = 3328 + ($799 << 2) | 0;
       do if (($720 | 0) == (HEAP32[$800 >> 2] | 0)) {
        HEAP32[$800 >> 2] = $R$1$i$i;
        if ($R$1$i$i) break;
        HEAP32[757] = HEAP32[757] & ~(1 << $799);
        break L332;
       } else {
        if ($771 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
        $809 = $771 + 16 | 0;
        if ((HEAP32[$809 >> 2] | 0) == ($720 | 0)) HEAP32[$809 >> 2] = $R$1$i$i; else HEAP32[$771 + 20 >> 2] = $R$1$i$i;
        if (!$R$1$i$i) break L332;
       } while (0);
       $814 = HEAP32[760] | 0;
       if ($R$1$i$i >>> 0 < $814 >>> 0) _abort();
       HEAP32[$R$1$i$i + 24 >> 2] = $771;
       $$sum3132$i$i = $719 | 16;
       $818 = HEAP32[$tbase$255$i + ($$sum3132$i$i + $tsize$254$i) >> 2] | 0;
       do if ($818) if ($818 >>> 0 < $814 >>> 0) _abort(); else {
        HEAP32[$R$1$i$i + 16 >> 2] = $818;
        HEAP32[$818 + 24 >> 2] = $R$1$i$i;
        break;
       } while (0);
       $824 = HEAP32[$tbase$255$i + ($$sum2$i21$i + $$sum3132$i$i) >> 2] | 0;
       if (!$824) break;
       if ($824 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
        HEAP32[$R$1$i$i + 20 >> 2] = $824;
        HEAP32[$824 + 24 >> 2] = $R$1$i$i;
        break;
       }
      } while (0);
      $oldfirst$0$i$i = $tbase$255$i + (($744 | $719) + $tsize$254$i) | 0;
      $qsize$0$i$i = $744 + $725 | 0;
     } else {
      $oldfirst$0$i$i = $720;
      $qsize$0$i$i = $725;
     }
     $832 = $oldfirst$0$i$i + 4 | 0;
     HEAP32[$832 >> 2] = HEAP32[$832 >> 2] & -2;
     HEAP32[$tbase$255$i + ($$sum$i19$i + 4) >> 2] = $qsize$0$i$i | 1;
     HEAP32[$tbase$255$i + ($qsize$0$i$i + $$sum$i19$i) >> 2] = $qsize$0$i$i;
     $838 = $qsize$0$i$i >>> 3;
     if ($qsize$0$i$i >>> 0 < 256) {
      $840 = $838 << 1;
      $841 = 3064 + ($840 << 2) | 0;
      $842 = HEAP32[756] | 0;
      $843 = 1 << $838;
      do if (!($842 & $843)) {
       HEAP32[756] = $842 | $843;
       $$pre$phi$i23$iZ2D = 3064 + ($840 + 2 << 2) | 0;
       $F4$0$i$i = $841;
      } else {
       $847 = 3064 + ($840 + 2 << 2) | 0;
       $848 = HEAP32[$847 >> 2] | 0;
       if ($848 >>> 0 >= (HEAP32[760] | 0) >>> 0) {
        $$pre$phi$i23$iZ2D = $847;
        $F4$0$i$i = $848;
        break;
       }
       _abort();
      } while (0);
      HEAP32[$$pre$phi$i23$iZ2D >> 2] = $724;
      HEAP32[$F4$0$i$i + 12 >> 2] = $724;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $F4$0$i$i;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $841;
      break;
     }
     $854 = $qsize$0$i$i >>> 8;
     do if (!$854) $I7$0$i$i = 0; else {
      if ($qsize$0$i$i >>> 0 > 16777215) {
       $I7$0$i$i = 31;
       break;
      }
      $859 = ($854 + 1048320 | 0) >>> 16 & 8;
      $860 = $854 << $859;
      $863 = ($860 + 520192 | 0) >>> 16 & 4;
      $865 = $860 << $863;
      $868 = ($865 + 245760 | 0) >>> 16 & 2;
      $873 = 14 - ($863 | $859 | $868) + ($865 << $868 >>> 15) | 0;
      $I7$0$i$i = $qsize$0$i$i >>> ($873 + 7 | 0) & 1 | $873 << 1;
     } while (0);
     $879 = 3328 + ($I7$0$i$i << 2) | 0;
     HEAP32[$tbase$255$i + ($$sum$i19$i + 28) >> 2] = $I7$0$i$i;
     HEAP32[$tbase$255$i + ($$sum$i19$i + 20) >> 2] = 0;
     HEAP32[$tbase$255$i + ($$sum$i19$i + 16) >> 2] = 0;
     $883 = HEAP32[757] | 0;
     $884 = 1 << $I7$0$i$i;
     if (!($883 & $884)) {
      HEAP32[757] = $883 | $884;
      HEAP32[$879 >> 2] = $724;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $879;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724;
      break;
     }
     $891 = HEAP32[$879 >> 2] | 0;
     L418 : do if ((HEAP32[$891 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) $T$0$lcssa$i25$i = $891; else {
      $K8$051$i$i = $qsize$0$i$i << (($I7$0$i$i | 0) == 31 ? 0 : 25 - ($I7$0$i$i >>> 1) | 0);
      $T$050$i$i = $891;
      while (1) {
       $908 = $T$050$i$i + 16 + ($K8$051$i$i >>> 31 << 2) | 0;
       $903 = HEAP32[$908 >> 2] | 0;
       if (!$903) {
        $$lcssa = $908;
        $T$050$i$i$lcssa = $T$050$i$i;
        break;
       }
       if ((HEAP32[$903 + 4 >> 2] & -8 | 0) == ($qsize$0$i$i | 0)) {
        $T$0$lcssa$i25$i = $903;
        break L418;
       } else {
        $K8$051$i$i = $K8$051$i$i << 1;
        $T$050$i$i = $903;
       }
      }
      if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
       HEAP32[$$lcssa >> 2] = $724;
       HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = $T$050$i$i$lcssa;
       HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $724;
       HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $724;
       break L324;
      }
     } while (0);
     $915 = $T$0$lcssa$i25$i + 8 | 0;
     $916 = HEAP32[$915 >> 2] | 0;
     $917 = HEAP32[760] | 0;
     if ($916 >>> 0 >= $917 >>> 0 & $T$0$lcssa$i25$i >>> 0 >= $917 >>> 0) {
      HEAP32[$916 + 12 >> 2] = $724;
      HEAP32[$915 >> 2] = $724;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 8) >> 2] = $916;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 12) >> 2] = $T$0$lcssa$i25$i;
      HEAP32[$tbase$255$i + ($$sum$i19$i + 24) >> 2] = 0;
      break;
     } else _abort();
    } while (0);
    $mem$0 = $tbase$255$i + ($711 | 8) | 0;
    return $mem$0 | 0;
   } else $sp$0$i$i$i = 3472;
   while (1) {
    $925 = HEAP32[$sp$0$i$i$i >> 2] | 0;
    if ($925 >>> 0 <= $635 >>> 0) {
     $928 = HEAP32[$sp$0$i$i$i + 4 >> 2] | 0;
     $929 = $925 + $928 | 0;
     if ($929 >>> 0 > $635 >>> 0) {
      $$lcssa215 = $925;
      $$lcssa216 = $928;
      $$lcssa217 = $929;
      break;
     }
    }
    $sp$0$i$i$i = HEAP32[$sp$0$i$i$i + 8 >> 2] | 0;
   }
   $934 = $$lcssa215 + ($$lcssa216 + -39) | 0;
   $940 = $$lcssa215 + ($$lcssa216 + -47 + (($934 & 7 | 0) == 0 ? 0 : 0 - $934 & 7)) | 0;
   $941 = $635 + 16 | 0;
   $943 = $940 >>> 0 < $941 >>> 0 ? $635 : $940;
   $944 = $943 + 8 | 0;
   $947 = $tbase$255$i + 8 | 0;
   $952 = ($947 & 7 | 0) == 0 ? 0 : 0 - $947 & 7;
   $954 = $tsize$254$i + -40 - $952 | 0;
   HEAP32[762] = $tbase$255$i + $952;
   HEAP32[759] = $954;
   HEAP32[$tbase$255$i + ($952 + 4) >> 2] = $954 | 1;
   HEAP32[$tbase$255$i + ($tsize$254$i + -36) >> 2] = 40;
   HEAP32[763] = HEAP32[878];
   $959 = $943 + 4 | 0;
   HEAP32[$959 >> 2] = 27;
   HEAP32[$944 >> 2] = HEAP32[868];
   HEAP32[$944 + 4 >> 2] = HEAP32[869];
   HEAP32[$944 + 8 >> 2] = HEAP32[870];
   HEAP32[$944 + 12 >> 2] = HEAP32[871];
   HEAP32[868] = $tbase$255$i;
   HEAP32[869] = $tsize$254$i;
   HEAP32[871] = 0;
   HEAP32[870] = $944;
   $960 = $943 + 28 | 0;
   HEAP32[$960 >> 2] = 7;
   if (($943 + 32 | 0) >>> 0 < $$lcssa217 >>> 0) {
    $964 = $960;
    do {
     $964$looptemp = $964;
     $964 = $964 + 4 | 0;
     HEAP32[$964 >> 2] = 7;
    } while (($964$looptemp + 8 | 0) >>> 0 < $$lcssa217 >>> 0);
   }
   if (($943 | 0) != ($635 | 0)) {
    $970 = $943 - $635 | 0;
    HEAP32[$959 >> 2] = HEAP32[$959 >> 2] & -2;
    HEAP32[$635 + 4 >> 2] = $970 | 1;
    HEAP32[$943 >> 2] = $970;
    $975 = $970 >>> 3;
    if ($970 >>> 0 < 256) {
     $977 = $975 << 1;
     $978 = 3064 + ($977 << 2) | 0;
     $979 = HEAP32[756] | 0;
     $980 = 1 << $975;
     if (!($979 & $980)) {
      HEAP32[756] = $979 | $980;
      $$pre$phi$i$iZ2D = 3064 + ($977 + 2 << 2) | 0;
      $F$0$i$i = $978;
     } else {
      $984 = 3064 + ($977 + 2 << 2) | 0;
      $985 = HEAP32[$984 >> 2] | 0;
      if ($985 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
       $$pre$phi$i$iZ2D = $984;
       $F$0$i$i = $985;
      }
     }
     HEAP32[$$pre$phi$i$iZ2D >> 2] = $635;
     HEAP32[$F$0$i$i + 12 >> 2] = $635;
     HEAP32[$635 + 8 >> 2] = $F$0$i$i;
     HEAP32[$635 + 12 >> 2] = $978;
     break;
    }
    $991 = $970 >>> 8;
    if (!$991) $I1$0$i$i = 0; else if ($970 >>> 0 > 16777215) $I1$0$i$i = 31; else {
     $996 = ($991 + 1048320 | 0) >>> 16 & 8;
     $997 = $991 << $996;
     $1000 = ($997 + 520192 | 0) >>> 16 & 4;
     $1002 = $997 << $1000;
     $1005 = ($1002 + 245760 | 0) >>> 16 & 2;
     $1010 = 14 - ($1000 | $996 | $1005) + ($1002 << $1005 >>> 15) | 0;
     $I1$0$i$i = $970 >>> ($1010 + 7 | 0) & 1 | $1010 << 1;
    }
    $1016 = 3328 + ($I1$0$i$i << 2) | 0;
    HEAP32[$635 + 28 >> 2] = $I1$0$i$i;
    HEAP32[$635 + 20 >> 2] = 0;
    HEAP32[$941 >> 2] = 0;
    $1019 = HEAP32[757] | 0;
    $1020 = 1 << $I1$0$i$i;
    if (!($1019 & $1020)) {
     HEAP32[757] = $1019 | $1020;
     HEAP32[$1016 >> 2] = $635;
     HEAP32[$635 + 24 >> 2] = $1016;
     HEAP32[$635 + 12 >> 2] = $635;
     HEAP32[$635 + 8 >> 2] = $635;
     break;
    }
    $1027 = HEAP32[$1016 >> 2] | 0;
    L459 : do if ((HEAP32[$1027 + 4 >> 2] & -8 | 0) == ($970 | 0)) $T$0$lcssa$i$i = $1027; else {
     $K2$07$i$i = $970 << (($I1$0$i$i | 0) == 31 ? 0 : 25 - ($I1$0$i$i >>> 1) | 0);
     $T$06$i$i = $1027;
     while (1) {
      $1044 = $T$06$i$i + 16 + ($K2$07$i$i >>> 31 << 2) | 0;
      $1039 = HEAP32[$1044 >> 2] | 0;
      if (!$1039) {
       $$lcssa211 = $1044;
       $T$06$i$i$lcssa = $T$06$i$i;
       break;
      }
      if ((HEAP32[$1039 + 4 >> 2] & -8 | 0) == ($970 | 0)) {
       $T$0$lcssa$i$i = $1039;
       break L459;
      } else {
       $K2$07$i$i = $K2$07$i$i << 1;
       $T$06$i$i = $1039;
      }
     }
     if ($$lcssa211 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
      HEAP32[$$lcssa211 >> 2] = $635;
      HEAP32[$635 + 24 >> 2] = $T$06$i$i$lcssa;
      HEAP32[$635 + 12 >> 2] = $635;
      HEAP32[$635 + 8 >> 2] = $635;
      break L299;
     }
    } while (0);
    $1051 = $T$0$lcssa$i$i + 8 | 0;
    $1052 = HEAP32[$1051 >> 2] | 0;
    $1053 = HEAP32[760] | 0;
    if ($1052 >>> 0 >= $1053 >>> 0 & $T$0$lcssa$i$i >>> 0 >= $1053 >>> 0) {
     HEAP32[$1052 + 12 >> 2] = $635;
     HEAP32[$1051 >> 2] = $635;
     HEAP32[$635 + 8 >> 2] = $1052;
     HEAP32[$635 + 12 >> 2] = $T$0$lcssa$i$i;
     HEAP32[$635 + 24 >> 2] = 0;
     break;
    } else _abort();
   }
  } while (0);
  $1060 = HEAP32[759] | 0;
  if ($1060 >>> 0 > $nb$0 >>> 0) {
   $1062 = $1060 - $nb$0 | 0;
   HEAP32[759] = $1062;
   $1063 = HEAP32[762] | 0;
   HEAP32[762] = $1063 + $nb$0;
   HEAP32[$1063 + ($nb$0 + 4) >> 2] = $1062 | 1;
   HEAP32[$1063 + 4 >> 2] = $nb$0 | 3;
   $mem$0 = $1063 + 8 | 0;
   return $mem$0 | 0;
  }
 }
 $1070 = ___errno_location() | 0;
 HEAP32[$1070 >> 2] = 12;
 $mem$0 = 0;
 return $mem$0 | 0;
}

function ___floatscan($f, $prec, $pok) {
 $f = $f | 0;
 $prec = $prec | 0;
 $pok = $pok | 0;
 var $$0 = 0.0, $$0$i27 = 0.0, $$010$i = 0, $$07$i = 0, $$0710$i = 0, $$0711$i = 0, $$09$i = 0, $$1$be$i = 0, $$1$ph$i = 0, $$18$i = 0, $$2$i = 0, $$3$be$i = 0, $$3$lcssa$i = 0, $$3105$i = 0, $$in = 0, $$lcssa = 0, $$lcssa256 = 0, $$lcssa256$lcssa = 0, $$lcssa257 = 0, $$lcssa257$lcssa = 0, $$lcssa263 = 0, $$lcssa264 = 0, $$lcssa265 = 0, $$lcssa275 = 0, $$not$i = 0, $$pre$i = 0, $$pre$i17 = 0, $$pre$phi42$iZ2D = 0.0, $$sink$off0$i = 0, $0 = 0, $1 = 0, $103 = 0, $113 = 0, $115 = 0, $123 = 0, $125 = 0, $132 = 0, $139 = 0, $147 = 0, $15 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $183 = 0.0, $190 = 0, $192 = 0, $2 = 0, $201 = 0, $205 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $223 = 0, $224 = 0, $225 = 0, $235 = 0, $236 = 0, $249 = 0, $251 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $266 = 0, $270 = 0, $272 = 0, $279 = 0, $283 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $295 = 0, $297 = 0, $298 = 0, $299 = 0, $300 = 0, $310 = 0.0, $322 = 0.0, $324 = 0, $330 = 0, $331 = 0, $338 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $350 = 0, $358 = 0, $36 = 0, $360 = 0, $362 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $371 = 0, $376 = 0, $377 = 0, $381 = 0, $39 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $402 = 0, $403 = 0, $412 = 0, $413 = 0, $414 = 0, $42 = 0, $421 = 0, $422 = 0, $427 = 0, $428 = 0, $430 = 0, $431 = 0, $444 = 0, $446 = 0, $452 = 0, $456 = 0, $458 = 0, $464 = 0, $470 = 0, $471 = 0, $472 = 0, $494 = 0, $506 = 0, $510 = 0, $513 = 0, $515 = 0, $516 = 0, $517 = 0, $520 = 0, $521 = 0, $533 = 0, $534 = 0, $535 = 0, $539 = 0, $541 = 0, $543 = 0, $544 = 0, $550 = 0, $552 = 0, $557 = 0, $560 = 0, $564 = 0, $567 = 0, $572 = 0, $576 = 0, $577 = 0, $579 = 0, $583 = 0, $585 = 0, $588 = 0, $589 = 0, $590 = 0, $591 = 0, $594 = 0, $595 = 0, $60 = 0, $604 = 0, $609 = 0, $610 = 0, $617 = 0, $619 = 0.0, $621 = 0, $625 = 0.0, $626 = 0.0, $629 = 0.0, $633 = 0, $636 = 0, $643 = 0.0, $661 = 0.0, $663 = 0, $669 = 0, $67 = 0, $670 = 0, $677 = 0, $680 = 0, $69 = 0, $691 = 0, $694 = 0, $695 = 0, $696 = 0, $697 = 0, $698 = 0, $699 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0, $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $77 = 0, $82 = 0, $9 = 0, $90 = 0, $99 = 0, $a$0$lcssa151$i = 0, $a$085$i = 0, $a$1$i = 0, $a$1$i$lcssa = 0, $a$2$ph38$i = 0, $a$3$i = 0, $a$3$i$lcssa248 = 0, $a$3$i249 = 0, $a$3$ph$i = 0, $a$3$ph157$i = 0, $a$478$i = 0, $a$5$i = 0, $a$5$i$lcssa = 0, $a$5$i$lcssa$lcssa = 0, $bias$0$i = 0.0, $bias$0$i25 = 0.0, $bits$0$ph = 0, $c$0 = 0, $c$0$i = 0, $c$1$lcssa = 0, $c$1$ph$i = 0, $c$179 = 0, $c$2 = 0, $c$2$i = 0, $c$2$lcssa$i = 0, $c$377 = 0, $c$4 = 0, $c$5 = 0, $c$6 = 0, $carry$087$i = 0, $carry1$0$i = 0, $carry1$1$i = 0, $carry1$1$i$lcssa = 0, $carry1$1$i$lcssa$lcssa = 0, $carry3$081$i = 0, $d$0$i = 0, $denormal$0$i = 0, $denormal$2$i = 0, $e2$0$i19 = 0, $e2$0$ph$i = 0, $e2$1$i = 0, $e2$1$i246 = 0, $e2$1$ph$i = 0, $e2$1$ph156$i = 0, $e2$2$i = 0, $e2$3$i = 0, $emin$0$ph = 0, $frac$0$i = 0.0, $frac$1$i = 0.0, $frac$2$i = 0.0, $gotdig$0$i = 0, $gotdig$0$i$lcssa242 = 0, $gotdig$0$i12 = 0, $gotdig$0$i12$lcssa273 = 0, $gotdig$2$i = 0, $gotdig$2$i$lcssa = 0, $gotdig$2$i13 = 0, $gotdig$3$i = 0, $gotdig$3$lcssa$i = 0, $gotdig$3101$i = 0, $gotdig$3101$i$lcssa = 0, $gotdig$4$i = 0, $gotrad$0$i = 0, $gotrad$0$i$lcssa = 0, $gotrad$0$i14 = 0, $gotrad$1$i = 0, $gotrad$1$lcssa$i = 0, $gotrad$1102$i = 0, $gotrad$2$i = 0, $gottail$0$i = 0, $gottail$1$i = 0, $gottail$2$i = 0, $i$0$lcssa = 0, $i$078 = 0, $i$1 = 0, $i$276 = 0, $i$3 = 0, $i$4 = 0, $i$4$lcssa = 0, $j$0$lcssa$i = 0, $j$0104$i = 0, $j$0104$i$lcssa = 0, $j$067$i = 0, $j$068$i = 0, $j$069$i = 0, $j$2$i = 0, $j$394$i = 0, $k$0$lcssa$i = 0, $k$0103$i = 0, $k$0103$i$lcssa = 0, $k$063$i = 0, $k$064$i = 0, $k$065$i = 0, $k$2$i = 0, $k$3$i = 0, $k$486$i = 0, $k$5$i = 0, $k$5$in$i = 0, $k$679$i = 0, $lnz$0$lcssa$i = 0, $lnz$0100$i = 0, $lnz$0100$i$lcssa = 0, $lnz$057$i = 0, $lnz$058$i = 0, $lnz$059$i = 0, $lnz$2$i = 0, $or$cond16$i = 0, $or$cond19$i = 0, $or$cond9$i = 0, $rp$0$lcssa152$i = 0, $rp$084$i = 0, $rp$1$i18 = 0, $rp$1$i18$lcssa = 0, $rp$2$ph36$i = 0, $rp$3$ph$i = 0, $rp$3$ph34$i = 0, $rp$477$i = 0, $rp$5$i = 0, $rp$5$i$lcssa = 0, $rp$5$i$lcssa$lcssa = 0, $scale$0$i = 0.0, $scale$1$i = 0.0, $scale$2$i = 0.0, $sign$0 = 0, $storemerge$i = 0, $sum$i = 0, $x$0$i = 0, $x$0$i$lcssa = 0, $x$1$i = 0, $x$2$i = 0, $x$3$lcssa$i = 0, $x$324$i = 0, $x$4$lcssa$i = 0, $x$419$i = 0, $x$5$i = 0, $x$i = 0, $y$0$i = 0.0, $y$0$i$lcssa = 0.0, $y$1$i = 0.0, $y$1$i24 = 0.0, $y$2$i = 0.0, $y$2$i26 = 0.0, $y$3$i = 0.0, $y$3$lcssa$i = 0.0, $y$320$i = 0.0, $y$4$i = 0.0, $z$0$i = 0, $z$1$i = 0, $z$1$ph37$i = 0, $z$2$i = 0, $z$3$i = 0, $z$3$i$lcssa = 0, $z$3$i$lcssa$lcssa = 0, $z$4$i = 0, $z$5$ph$i = 0, $z$7$1$i = 0, $z$7$i = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 512 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $x$i = sp;
 switch ($prec | 0) {
 case 0:
  {
   $bits$0$ph = 24;
   $emin$0$ph = -149;
   label = 4;
   break;
  }
 case 1:
  {
   $bits$0$ph = 53;
   $emin$0$ph = -1074;
   label = 4;
   break;
  }
 case 2:
  {
   $bits$0$ph = 53;
   $emin$0$ph = -1074;
   label = 4;
   break;
  }
 default:
  $$0 = 0.0;
 }
 L4 : do if ((label | 0) == 4) {
  $0 = $f + 4 | 0;
  $1 = $f + 100 | 0;
  do {
   $2 = HEAP32[$0 >> 2] | 0;
   if ($2 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
    HEAP32[$0 >> 2] = $2 + 1;
    $9 = HEAPU8[$2 >> 0] | 0;
   } else $9 = ___shgetc($f) | 0;
  } while ((_isspace($9) | 0) != 0);
  $$lcssa275 = $9;
  L13 : do switch ($$lcssa275 | 0) {
  case 43:
  case 45:
   {
    $15 = 1 - ((($$lcssa275 | 0) == 45 & 1) << 1) | 0;
    $16 = HEAP32[$0 >> 2] | 0;
    if ($16 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
     HEAP32[$0 >> 2] = $16 + 1;
     $c$0 = HEAPU8[$16 >> 0] | 0;
     $sign$0 = $15;
     break L13;
    } else {
     $c$0 = ___shgetc($f) | 0;
     $sign$0 = $15;
     break L13;
    }
    break;
   }
  default:
   {
    $c$0 = $$lcssa275;
    $sign$0 = 1;
   }
  } while (0);
  $c$179 = $c$0;
  $i$078 = 0;
  while (1) {
   if (($c$179 | 32 | 0) != (HEAP8[16484 + $i$078 >> 0] | 0)) {
    $c$1$lcssa = $c$179;
    $i$0$lcssa = $i$078;
    break;
   }
   do if ($i$078 >>> 0 < 7) {
    $29 = HEAP32[$0 >> 2] | 0;
    if ($29 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
     HEAP32[$0 >> 2] = $29 + 1;
     $c$2 = HEAPU8[$29 >> 0] | 0;
     break;
    } else {
     $c$2 = ___shgetc($f) | 0;
     break;
    }
   } else $c$2 = $c$179; while (0);
   $36 = $i$078 + 1 | 0;
   if ($36 >>> 0 < 8) {
    $c$179 = $c$2;
    $i$078 = $36;
   } else {
    $c$1$lcssa = $c$2;
    $i$0$lcssa = $36;
    break;
   }
  }
  L29 : do switch ($i$0$lcssa | 0) {
  case 8:
   break;
  case 3:
   {
    label = 23;
    break;
   }
  default:
   {
    $39 = ($pok | 0) != 0;
    if ($39 & $i$0$lcssa >>> 0 > 3) if (($i$0$lcssa | 0) == 8) break L29; else {
     label = 23;
     break L29;
    }
    L34 : do if (!$i$0$lcssa) {
     $c$377 = $c$1$lcssa;
     $i$276 = 0;
     while (1) {
      if (($c$377 | 32 | 0) != (HEAP8[18327 + $i$276 >> 0] | 0)) {
       $c$5 = $c$377;
       $i$3 = $i$276;
       break L34;
      }
      do if ($i$276 >>> 0 < 2) {
       $60 = HEAP32[$0 >> 2] | 0;
       if ($60 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $60 + 1;
        $c$4 = HEAPU8[$60 >> 0] | 0;
        break;
       } else {
        $c$4 = ___shgetc($f) | 0;
        break;
       }
      } else $c$4 = $c$377; while (0);
      $67 = $i$276 + 1 | 0;
      if ($67 >>> 0 < 3) {
       $c$377 = $c$4;
       $i$276 = $67;
      } else {
       $c$5 = $c$4;
       $i$3 = $67;
       break;
      }
     }
    } else {
     $c$5 = $c$1$lcssa;
     $i$3 = $i$0$lcssa;
    } while (0);
    switch ($i$3 | 0) {
    case 3:
     {
      $69 = HEAP32[$0 >> 2] | 0;
      if ($69 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
       HEAP32[$0 >> 2] = $69 + 1;
       $77 = HEAPU8[$69 >> 0] | 0;
      } else $77 = ___shgetc($f) | 0;
      if (($77 | 0) == 40) $i$4 = 1; else {
       if (!(HEAP32[$1 >> 2] | 0)) {
        $$0 = nan;
        break L4;
       }
       HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
       $$0 = nan;
       break L4;
      }
      while (1) {
       $82 = HEAP32[$0 >> 2] | 0;
       if ($82 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $82 + 1;
        $90 = HEAPU8[$82 >> 0] | 0;
       } else $90 = ___shgetc($f) | 0;
       if (!(($90 + -48 | 0) >>> 0 < 10 | ($90 + -65 | 0) >>> 0 < 26)) if (!(($90 | 0) == 95 | ($90 + -97 | 0) >>> 0 < 26)) {
        $$lcssa = $90;
        $i$4$lcssa = $i$4;
        break;
       }
       $i$4 = $i$4 + 1 | 0;
      }
      if (($$lcssa | 0) == 41) {
       $$0 = nan;
       break L4;
      }
      $99 = (HEAP32[$1 >> 2] | 0) == 0;
      if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
      if (!$39) {
       $103 = ___errno_location() | 0;
       HEAP32[$103 >> 2] = 22;
       ___shlim($f, 0);
       $$0 = 0.0;
       break L4;
      }
      if (!$i$4$lcssa) {
       $$0 = nan;
       break L4;
      } else $$in = $i$4$lcssa;
      while (1) {
       $$in = $$in + -1 | 0;
       if (!$99) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
       if (!$$in) {
        $$0 = nan;
        break L4;
       }
      }
      break;
     }
    case 0:
     {
      do if (($c$5 | 0) == 48) {
       $115 = HEAP32[$0 >> 2] | 0;
       if ($115 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $115 + 1;
        $123 = HEAPU8[$115 >> 0] | 0;
       } else $123 = ___shgetc($f) | 0;
       if (($123 | 32 | 0) != 120) {
        if (!(HEAP32[$1 >> 2] | 0)) {
         $c$6 = 48;
         break;
        }
        HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
        $c$6 = 48;
        break;
       }
       $125 = HEAP32[$0 >> 2] | 0;
       if ($125 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $125 + 1;
        $c$0$i = HEAPU8[$125 >> 0] | 0;
        $gotdig$0$i = 0;
       } else {
        $c$0$i = ___shgetc($f) | 0;
        $gotdig$0$i = 0;
       }
       L94 : while (1) {
        switch ($c$0$i | 0) {
        case 46:
         {
          $gotdig$0$i$lcssa242 = $gotdig$0$i;
          label = 74;
          break L94;
          break;
         }
        case 48:
         break;
        default:
         {
          $169 = 0;
          $171 = 0;
          $694 = 0;
          $695 = 0;
          $c$2$i = $c$0$i;
          $gotdig$2$i = $gotdig$0$i;
          $gotrad$0$i = 0;
          $gottail$0$i = 0;
          $scale$0$i = 1.0;
          $x$0$i = 0;
          $y$0$i = 0.0;
          break L94;
         }
        }
        $132 = HEAP32[$0 >> 2] | 0;
        if ($132 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
         HEAP32[$0 >> 2] = $132 + 1;
         $c$0$i = HEAPU8[$132 >> 0] | 0;
         $gotdig$0$i = 1;
         continue;
        } else {
         $c$0$i = ___shgetc($f) | 0;
         $gotdig$0$i = 1;
         continue;
        }
       }
       if ((label | 0) == 74) {
        $139 = HEAP32[$0 >> 2] | 0;
        if ($139 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
         HEAP32[$0 >> 2] = $139 + 1;
         $c$1$ph$i = HEAPU8[$139 >> 0] | 0;
        } else $c$1$ph$i = ___shgetc($f) | 0;
        if (($c$1$ph$i | 0) == 48) {
         $154 = 0;
         $155 = 0;
         while (1) {
          $147 = HEAP32[$0 >> 2] | 0;
          if ($147 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
           HEAP32[$0 >> 2] = $147 + 1;
           $159 = HEAPU8[$147 >> 0] | 0;
          } else $159 = ___shgetc($f) | 0;
          $156 = _i64Add($154 | 0, $155 | 0, -1, -1) | 0;
          $157 = tempRet0;
          if (($159 | 0) == 48) {
           $154 = $156;
           $155 = $157;
          } else {
           $169 = 0;
           $171 = 0;
           $694 = $156;
           $695 = $157;
           $c$2$i = $159;
           $gotdig$2$i = 1;
           $gotrad$0$i = 1;
           $gottail$0$i = 0;
           $scale$0$i = 1.0;
           $x$0$i = 0;
           $y$0$i = 0.0;
           break;
          }
         }
        } else {
         $169 = 0;
         $171 = 0;
         $694 = 0;
         $695 = 0;
         $c$2$i = $c$1$ph$i;
         $gotdig$2$i = $gotdig$0$i$lcssa242;
         $gotrad$0$i = 1;
         $gottail$0$i = 0;
         $scale$0$i = 1.0;
         $x$0$i = 0;
         $y$0$i = 0.0;
        }
       }
       while (1) {
        $160 = $c$2$i + -48 | 0;
        $$pre$i = $c$2$i | 32;
        if ($160 >>> 0 < 10) label = 86; else {
         $164 = ($c$2$i | 0) == 46;
         if (!($164 | ($$pre$i + -97 | 0) >>> 0 < 6)) {
          $213 = $171;
          $214 = $694;
          $216 = $169;
          $217 = $695;
          $c$2$lcssa$i = $c$2$i;
          $gotdig$2$i$lcssa = $gotdig$2$i;
          $gotrad$0$i$lcssa = $gotrad$0$i;
          $x$0$i$lcssa = $x$0$i;
          $y$0$i$lcssa = $y$0$i;
          break;
         }
         if ($164) if (!$gotrad$0$i) {
          $696 = $171;
          $697 = $169;
          $698 = $171;
          $699 = $169;
          $gotdig$3$i = $gotdig$2$i;
          $gotrad$1$i = 1;
          $gottail$2$i = $gottail$0$i;
          $scale$2$i = $scale$0$i;
          $x$2$i = $x$0$i;
          $y$2$i = $y$0$i;
         } else {
          $213 = $171;
          $214 = $694;
          $216 = $169;
          $217 = $695;
          $c$2$lcssa$i = 46;
          $gotdig$2$i$lcssa = $gotdig$2$i;
          $gotrad$0$i$lcssa = $gotrad$0$i;
          $x$0$i$lcssa = $x$0$i;
          $y$0$i$lcssa = $y$0$i;
          break;
         } else label = 86;
        }
        if ((label | 0) == 86) {
         label = 0;
         $d$0$i = ($c$2$i | 0) > 57 ? $$pre$i + -87 | 0 : $160;
         do if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 8) {
          $gottail$1$i = $gottail$0$i;
          $scale$1$i = $scale$0$i;
          $x$1$i = $d$0$i + ($x$0$i << 4) | 0;
          $y$1$i = $y$0$i;
         } else {
          if (($169 | 0) < 0 | ($169 | 0) == 0 & $171 >>> 0 < 14) {
           $183 = $scale$0$i * .0625;
           $gottail$1$i = $gottail$0$i;
           $scale$1$i = $183;
           $x$1$i = $x$0$i;
           $y$1$i = $y$0$i + $183 * +($d$0$i | 0);
           break;
          }
          if (($gottail$0$i | 0) != 0 | ($d$0$i | 0) == 0) {
           $gottail$1$i = $gottail$0$i;
           $scale$1$i = $scale$0$i;
           $x$1$i = $x$0$i;
           $y$1$i = $y$0$i;
          } else {
           $gottail$1$i = 1;
           $scale$1$i = $scale$0$i;
           $x$1$i = $x$0$i;
           $y$1$i = $y$0$i + $scale$0$i * .5;
          }
         } while (0);
         $190 = _i64Add($171 | 0, $169 | 0, 1, 0) | 0;
         $696 = $694;
         $697 = $695;
         $698 = $190;
         $699 = tempRet0;
         $gotdig$3$i = 1;
         $gotrad$1$i = $gotrad$0$i;
         $gottail$2$i = $gottail$1$i;
         $scale$2$i = $scale$1$i;
         $x$2$i = $x$1$i;
         $y$2$i = $y$1$i;
        }
        $192 = HEAP32[$0 >> 2] | 0;
        if ($192 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
         HEAP32[$0 >> 2] = $192 + 1;
         $169 = $699;
         $171 = $698;
         $694 = $696;
         $695 = $697;
         $c$2$i = HEAPU8[$192 >> 0] | 0;
         $gotdig$2$i = $gotdig$3$i;
         $gotrad$0$i = $gotrad$1$i;
         $gottail$0$i = $gottail$2$i;
         $scale$0$i = $scale$2$i;
         $x$0$i = $x$2$i;
         $y$0$i = $y$2$i;
         continue;
        } else {
         $169 = $699;
         $171 = $698;
         $694 = $696;
         $695 = $697;
         $c$2$i = ___shgetc($f) | 0;
         $gotdig$2$i = $gotdig$3$i;
         $gotrad$0$i = $gotrad$1$i;
         $gottail$0$i = $gottail$2$i;
         $scale$0$i = $scale$2$i;
         $x$0$i = $x$2$i;
         $y$0$i = $y$2$i;
         continue;
        }
       }
       if (!$gotdig$2$i$lcssa) {
        $201 = (HEAP32[$1 >> 2] | 0) == 0;
        if (!$201) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
        if (!$pok) ___shlim($f, 0); else if (!$201) {
         $205 = HEAP32[$0 >> 2] | 0;
         HEAP32[$0 >> 2] = $205 + -1;
         if ($gotrad$0$i$lcssa) HEAP32[$0 >> 2] = $205 + -2;
        }
        $$0 = +($sign$0 | 0) * 0.0;
        break L4;
       }
       $211 = ($gotrad$0$i$lcssa | 0) == 0;
       $212 = $211 ? $213 : $214;
       $215 = $211 ? $216 : $217;
       if (($216 | 0) < 0 | ($216 | 0) == 0 & $213 >>> 0 < 8) {
        $224 = $213;
        $225 = $216;
        $x$324$i = $x$0$i$lcssa;
        while (1) {
         $223 = $x$324$i << 4;
         $224 = _i64Add($224 | 0, $225 | 0, 1, 0) | 0;
         $225 = tempRet0;
         if (!(($225 | 0) < 0 | ($225 | 0) == 0 & $224 >>> 0 < 8)) {
          $x$3$lcssa$i = $223;
          break;
         } else $x$324$i = $223;
        }
       } else $x$3$lcssa$i = $x$0$i$lcssa;
       if (($c$2$lcssa$i | 32 | 0) == 112) {
        $235 = _scanexp($f, $pok) | 0;
        $236 = tempRet0;
        if (($235 | 0) == 0 & ($236 | 0) == -2147483648) {
         if (!$pok) {
          ___shlim($f, 0);
          $$0 = 0.0;
          break L4;
         }
         if (!(HEAP32[$1 >> 2] | 0)) {
          $253 = 0;
          $254 = 0;
         } else {
          HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
          $253 = 0;
          $254 = 0;
         }
        } else {
         $253 = $235;
         $254 = $236;
        }
       } else if (!(HEAP32[$1 >> 2] | 0)) {
        $253 = 0;
        $254 = 0;
       } else {
        HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
        $253 = 0;
        $254 = 0;
       }
       $249 = _bitshift64Shl($212 | 0, $215 | 0, 2) | 0;
       $251 = _i64Add($249 | 0, tempRet0 | 0, -32, -1) | 0;
       $255 = _i64Add($251 | 0, tempRet0 | 0, $253 | 0, $254 | 0) | 0;
       $256 = tempRet0;
       if (!$x$3$lcssa$i) {
        $$0 = +($sign$0 | 0) * 0.0;
        break L4;
       }
       if (($256 | 0) > 0 | ($256 | 0) == 0 & $255 >>> 0 > (0 - $emin$0$ph | 0) >>> 0) {
        $266 = ___errno_location() | 0;
        HEAP32[$266 >> 2] = 34;
        $$0 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;
        break L4;
       }
       $270 = $emin$0$ph + -106 | 0;
       $272 = (($270 | 0) < 0) << 31 >> 31;
       if (($256 | 0) < ($272 | 0) | ($256 | 0) == ($272 | 0) & $255 >>> 0 < $270 >>> 0) {
        $279 = ___errno_location() | 0;
        HEAP32[$279 >> 2] = 34;
        $$0 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
        break L4;
       }
       if (($x$3$lcssa$i | 0) > -1) {
        $288 = $255;
        $289 = $256;
        $x$419$i = $x$3$lcssa$i;
        $y$320$i = $y$0$i$lcssa;
        while (1) {
         $283 = !($y$320$i >= .5);
         $287 = $283 & 1 | $x$419$i << 1;
         $x$5$i = $287 ^ 1;
         $y$4$i = $y$320$i + ($283 ? $y$320$i : $y$320$i + -1.0);
         $290 = _i64Add($288 | 0, $289 | 0, -1, -1) | 0;
         $291 = tempRet0;
         if (($287 | 0) > -1) {
          $288 = $290;
          $289 = $291;
          $x$419$i = $x$5$i;
          $y$320$i = $y$4$i;
         } else {
          $297 = $290;
          $298 = $291;
          $x$4$lcssa$i = $x$5$i;
          $y$3$lcssa$i = $y$4$i;
          break;
         }
        }
       } else {
        $297 = $255;
        $298 = $256;
        $x$4$lcssa$i = $x$3$lcssa$i;
        $y$3$lcssa$i = $y$0$i$lcssa;
       }
       $295 = _i64Subtract(32, 0, $emin$0$ph | 0, (($emin$0$ph | 0) < 0) << 31 >> 31 | 0) | 0;
       $299 = _i64Add($297 | 0, $298 | 0, $295 | 0, tempRet0 | 0) | 0;
       $300 = tempRet0;
       if (0 > ($300 | 0) | 0 == ($300 | 0) & $bits$0$ph >>> 0 > $299 >>> 0) if (($299 | 0) < 0) {
        $$0710$i = 0;
        label = 127;
       } else {
        $$07$i = $299;
        label = 125;
       } else {
        $$07$i = $bits$0$ph;
        label = 125;
       }
       if ((label | 0) == 125) if (($$07$i | 0) < 53) {
        $$0710$i = $$07$i;
        label = 127;
       } else {
        $$0711$i = $$07$i;
        $$pre$phi42$iZ2D = +($sign$0 | 0);
        $bias$0$i = 0.0;
       }
       if ((label | 0) == 127) {
        $310 = +($sign$0 | 0);
        $$0711$i = $$0710$i;
        $$pre$phi42$iZ2D = $310;
        $bias$0$i = +_copysignl(+_scalbn(1.0, 84 - $$0710$i | 0), $310);
       }
       $or$cond9$i = ($x$4$lcssa$i & 1 | 0) == 0 & ($y$3$lcssa$i != 0.0 & ($$0711$i | 0) < 32);
       $322 = $$pre$phi42$iZ2D * ($or$cond9$i ? 0.0 : $y$3$lcssa$i) + ($bias$0$i + $$pre$phi42$iZ2D * +((($or$cond9$i & 1) + $x$4$lcssa$i | 0) >>> 0)) - $bias$0$i;
       if (!($322 != 0.0)) {
        $324 = ___errno_location() | 0;
        HEAP32[$324 >> 2] = 34;
       }
       $$0 = +_scalbnl($322, $297);
       break L4;
      } else $c$6 = $c$5; while (0);
      $sum$i = $emin$0$ph + $bits$0$ph | 0;
      $330 = 0 - $sum$i | 0;
      $$09$i = $c$6;
      $gotdig$0$i12 = 0;
      L184 : while (1) {
       switch ($$09$i | 0) {
       case 46:
        {
         $gotdig$0$i12$lcssa273 = $gotdig$0$i12;
         label = 138;
         break L184;
         break;
        }
       case 48:
        break;
       default:
        {
         $$2$i = $$09$i;
         $700 = 0;
         $701 = 0;
         $gotdig$2$i13 = $gotdig$0$i12;
         $gotrad$0$i14 = 0;
         break L184;
        }
       }
       $331 = HEAP32[$0 >> 2] | 0;
       if ($331 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $331 + 1;
        $$09$i = HEAPU8[$331 >> 0] | 0;
        $gotdig$0$i12 = 1;
        continue;
       } else {
        $$09$i = ___shgetc($f) | 0;
        $gotdig$0$i12 = 1;
        continue;
       }
      }
      if ((label | 0) == 138) {
       $338 = HEAP32[$0 >> 2] | 0;
       if ($338 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
        HEAP32[$0 >> 2] = $338 + 1;
        $$1$ph$i = HEAPU8[$338 >> 0] | 0;
       } else $$1$ph$i = ___shgetc($f) | 0;
       if (($$1$ph$i | 0) == 48) {
        $346 = 0;
        $347 = 0;
        while (1) {
         $348 = _i64Add($346 | 0, $347 | 0, -1, -1) | 0;
         $349 = tempRet0;
         $350 = HEAP32[$0 >> 2] | 0;
         if ($350 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
          HEAP32[$0 >> 2] = $350 + 1;
          $$1$be$i = HEAPU8[$350 >> 0] | 0;
         } else $$1$be$i = ___shgetc($f) | 0;
         if (($$1$be$i | 0) == 48) {
          $346 = $348;
          $347 = $349;
         } else {
          $$2$i = $$1$be$i;
          $700 = $348;
          $701 = $349;
          $gotdig$2$i13 = 1;
          $gotrad$0$i14 = 1;
          break;
         }
        }
       } else {
        $$2$i = $$1$ph$i;
        $700 = 0;
        $701 = 0;
        $gotdig$2$i13 = $gotdig$0$i12$lcssa273;
        $gotrad$0$i14 = 1;
       }
      }
      HEAP32[$x$i >> 2] = 0;
      $358 = $$2$i + -48 | 0;
      $360 = ($$2$i | 0) == 46;
      L203 : do if ($360 | $358 >>> 0 < 10) {
       $362 = $x$i + 496 | 0;
       $$3105$i = $$2$i;
       $365 = 0;
       $366 = 0;
       $702 = $360;
       $703 = $358;
       $704 = $700;
       $705 = $701;
       $gotdig$3101$i = $gotdig$2$i13;
       $gotrad$1102$i = $gotrad$0$i14;
       $j$0104$i = 0;
       $k$0103$i = 0;
       $lnz$0100$i = 0;
       L205 : while (1) {
        do if ($702) if (!$gotrad$1102$i) {
         $706 = $365;
         $707 = $366;
         $708 = $365;
         $709 = $366;
         $gotdig$4$i = $gotdig$3101$i;
         $gotrad$2$i = 1;
         $j$2$i = $j$0104$i;
         $k$2$i = $k$0103$i;
         $lnz$2$i = $lnz$0100$i;
        } else {
         $710 = $704;
         $711 = $705;
         $712 = $365;
         $713 = $366;
         $gotdig$3101$i$lcssa = $gotdig$3101$i;
         $j$0104$i$lcssa = $j$0104$i;
         $k$0103$i$lcssa = $k$0103$i;
         $lnz$0100$i$lcssa = $lnz$0100$i;
         break L205;
        } else {
         $367 = _i64Add($365 | 0, $366 | 0, 1, 0) | 0;
         $368 = tempRet0;
         $369 = ($$3105$i | 0) != 48;
         if (($k$0103$i | 0) >= 125) {
          if (!$369) {
           $706 = $704;
           $707 = $705;
           $708 = $367;
           $709 = $368;
           $gotdig$4$i = $gotdig$3101$i;
           $gotrad$2$i = $gotrad$1102$i;
           $j$2$i = $j$0104$i;
           $k$2$i = $k$0103$i;
           $lnz$2$i = $lnz$0100$i;
           break;
          }
          HEAP32[$362 >> 2] = HEAP32[$362 >> 2] | 1;
          $706 = $704;
          $707 = $705;
          $708 = $367;
          $709 = $368;
          $gotdig$4$i = $gotdig$3101$i;
          $gotrad$2$i = $gotrad$1102$i;
          $j$2$i = $j$0104$i;
          $k$2$i = $k$0103$i;
          $lnz$2$i = $lnz$0100$i;
          break;
         }
         $371 = $x$i + ($k$0103$i << 2) | 0;
         if (!$j$0104$i) $storemerge$i = $703; else $storemerge$i = $$3105$i + -48 + ((HEAP32[$371 >> 2] | 0) * 10 | 0) | 0;
         HEAP32[$371 >> 2] = $storemerge$i;
         $376 = $j$0104$i + 1 | 0;
         $377 = ($376 | 0) == 9;
         $706 = $704;
         $707 = $705;
         $708 = $367;
         $709 = $368;
         $gotdig$4$i = 1;
         $gotrad$2$i = $gotrad$1102$i;
         $j$2$i = $377 ? 0 : $376;
         $k$2$i = ($377 & 1) + $k$0103$i | 0;
         $lnz$2$i = $369 ? $367 : $lnz$0100$i;
        } while (0);
        $381 = HEAP32[$0 >> 2] | 0;
        if ($381 >>> 0 < (HEAP32[$1 >> 2] | 0) >>> 0) {
         HEAP32[$0 >> 2] = $381 + 1;
         $$3$be$i = HEAPU8[$381 >> 0] | 0;
        } else $$3$be$i = ___shgetc($f) | 0;
        $703 = $$3$be$i + -48 | 0;
        $702 = ($$3$be$i | 0) == 46;
        if (!($702 | $703 >>> 0 < 10)) {
         $$3$lcssa$i = $$3$be$i;
         $394 = $708;
         $395 = $706;
         $397 = $709;
         $398 = $707;
         $gotdig$3$lcssa$i = $gotdig$4$i;
         $gotrad$1$lcssa$i = $gotrad$2$i;
         $j$0$lcssa$i = $j$2$i;
         $k$0$lcssa$i = $k$2$i;
         $lnz$0$lcssa$i = $lnz$2$i;
         label = 161;
         break L203;
        } else {
         $$3105$i = $$3$be$i;
         $365 = $708;
         $366 = $709;
         $704 = $706;
         $705 = $707;
         $gotdig$3101$i = $gotdig$4$i;
         $gotrad$1102$i = $gotrad$2$i;
         $j$0104$i = $j$2$i;
         $k$0103$i = $k$2$i;
         $lnz$0100$i = $lnz$2$i;
        }
       }
       $714 = $712;
       $715 = $713;
       $716 = $710;
       $717 = $711;
       $718 = ($gotdig$3101$i$lcssa | 0) != 0;
       $j$069$i = $j$0104$i$lcssa;
       $k$065$i = $k$0103$i$lcssa;
       $lnz$059$i = $lnz$0100$i$lcssa;
       label = 169;
      } else {
       $$3$lcssa$i = $$2$i;
       $394 = 0;
       $395 = $700;
       $397 = 0;
       $398 = $701;
       $gotdig$3$lcssa$i = $gotdig$2$i13;
       $gotrad$1$lcssa$i = $gotrad$0$i14;
       $j$0$lcssa$i = 0;
       $k$0$lcssa$i = 0;
       $lnz$0$lcssa$i = 0;
       label = 161;
      } while (0);
      do if ((label | 0) == 161) {
       $392 = ($gotrad$1$lcssa$i | 0) == 0;
       $393 = $392 ? $394 : $395;
       $396 = $392 ? $397 : $398;
       $399 = ($gotdig$3$lcssa$i | 0) != 0;
       if (!(($$3$lcssa$i | 32 | 0) == 101 & $399)) if (($$3$lcssa$i | 0) > -1) {
        $714 = $394;
        $715 = $397;
        $716 = $393;
        $717 = $396;
        $718 = $399;
        $j$069$i = $j$0$lcssa$i;
        $k$065$i = $k$0$lcssa$i;
        $lnz$059$i = $lnz$0$lcssa$i;
        label = 169;
        break;
       } else {
        $719 = $394;
        $720 = $397;
        $721 = $399;
        $722 = $393;
        $723 = $396;
        $j$068$i = $j$0$lcssa$i;
        $k$064$i = $k$0$lcssa$i;
        $lnz$058$i = $lnz$0$lcssa$i;
        label = 171;
        break;
       }
       $402 = _scanexp($f, $pok) | 0;
       $403 = tempRet0;
       if (($402 | 0) == 0 & ($403 | 0) == -2147483648) {
        if (!$pok) {
         ___shlim($f, 0);
         $$0$i27 = 0.0;
         break;
        }
        if (!(HEAP32[$1 >> 2] | 0)) {
         $412 = 0;
         $413 = 0;
        } else {
         HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
         $412 = 0;
         $413 = 0;
        }
       } else {
        $412 = $402;
        $413 = $403;
       }
       $414 = _i64Add($412 | 0, $413 | 0, $393 | 0, $396 | 0) | 0;
       $427 = $414;
       $428 = $394;
       $430 = tempRet0;
       $431 = $397;
       $j$067$i = $j$0$lcssa$i;
       $k$063$i = $k$0$lcssa$i;
       $lnz$057$i = $lnz$0$lcssa$i;
       label = 173;
      } while (0);
      if ((label | 0) == 169) if (!(HEAP32[$1 >> 2] | 0)) {
       $719 = $714;
       $720 = $715;
       $721 = $718;
       $722 = $716;
       $723 = $717;
       $j$068$i = $j$069$i;
       $k$064$i = $k$065$i;
       $lnz$058$i = $lnz$059$i;
       label = 171;
      } else {
       HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
       if ($718) {
        $427 = $716;
        $428 = $714;
        $430 = $717;
        $431 = $715;
        $j$067$i = $j$069$i;
        $k$063$i = $k$065$i;
        $lnz$057$i = $lnz$059$i;
        label = 173;
       } else label = 172;
      }
      if ((label | 0) == 171) if ($721) {
       $427 = $722;
       $428 = $719;
       $430 = $723;
       $431 = $720;
       $j$067$i = $j$068$i;
       $k$063$i = $k$064$i;
       $lnz$057$i = $lnz$058$i;
       label = 173;
      } else label = 172;
      do if ((label | 0) == 172) {
       $421 = ___errno_location() | 0;
       HEAP32[$421 >> 2] = 22;
       ___shlim($f, 0);
       $$0$i27 = 0.0;
      } else if ((label | 0) == 173) {
       $422 = HEAP32[$x$i >> 2] | 0;
       if (!$422) {
        $$0$i27 = +($sign$0 | 0) * 0.0;
        break;
       }
       if ((($431 | 0) < 0 | ($431 | 0) == 0 & $428 >>> 0 < 10) & (($427 | 0) == ($428 | 0) & ($430 | 0) == ($431 | 0))) if ($bits$0$ph >>> 0 > 30 | ($422 >>> $bits$0$ph | 0) == 0) {
        $$0$i27 = +($sign$0 | 0) * +($422 >>> 0);
        break;
       }
       $444 = ($emin$0$ph | 0) / -2 | 0;
       $446 = (($444 | 0) < 0) << 31 >> 31;
       if (($430 | 0) > ($446 | 0) | ($430 | 0) == ($446 | 0) & $427 >>> 0 > $444 >>> 0) {
        $452 = ___errno_location() | 0;
        HEAP32[$452 >> 2] = 34;
        $$0$i27 = +($sign$0 | 0) * 1797693134862315708145274.0e284 * 1797693134862315708145274.0e284;
        break;
       }
       $456 = $emin$0$ph + -106 | 0;
       $458 = (($456 | 0) < 0) << 31 >> 31;
       if (($430 | 0) < ($458 | 0) | ($430 | 0) == ($458 | 0) & $427 >>> 0 < $456 >>> 0) {
        $464 = ___errno_location() | 0;
        HEAP32[$464 >> 2] = 34;
        $$0$i27 = +($sign$0 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
        break;
       }
       if (!$j$067$i) $k$3$i = $k$063$i; else {
        if (($j$067$i | 0) < 9) {
         $470 = $x$i + ($k$063$i << 2) | 0;
         $472 = HEAP32[$470 >> 2] | 0;
         $j$394$i = $j$067$i;
         while (1) {
          $471 = $472 * 10 | 0;
          $j$394$i = $j$394$i + 1 | 0;
          if (($j$394$i | 0) == 9) {
           $$lcssa265 = $471;
           break;
          } else $472 = $471;
         }
         HEAP32[$470 >> 2] = $$lcssa265;
        }
        $k$3$i = $k$063$i + 1 | 0;
       }
       if (($lnz$057$i | 0) < 9) if (($lnz$057$i | 0) <= ($427 | 0) & ($427 | 0) < 18) {
        if (($427 | 0) == 9) {
         $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0);
         break;
        }
        if (($427 | 0) < 9) {
         $$0$i27 = +($sign$0 | 0) * +((HEAP32[$x$i >> 2] | 0) >>> 0) / +(HEAP32[2648 + (8 - $427 << 2) >> 2] | 0);
         break;
        }
        $494 = $bits$0$ph + 27 + (Math_imul($427, -3) | 0) | 0;
        $$pre$i17 = HEAP32[$x$i >> 2] | 0;
        if (($494 | 0) > 30 | ($$pre$i17 >>> $494 | 0) == 0) {
         $$0$i27 = +($sign$0 | 0) * +($$pre$i17 >>> 0) * +(HEAP32[2648 + ($427 + -10 << 2) >> 2] | 0);
         break;
        }
       }
       $506 = ($427 | 0) % 9 | 0;
       if (!$506) {
        $a$2$ph38$i = 0;
        $e2$0$ph$i = 0;
        $rp$2$ph36$i = $427;
        $z$1$ph37$i = $k$3$i;
       } else {
        $510 = ($427 | 0) > -1 ? $506 : $506 + 9 | 0;
        $513 = HEAP32[2648 + (8 - $510 << 2) >> 2] | 0;
        if (!$k$3$i) {
         $a$0$lcssa151$i = 0;
         $rp$0$lcssa152$i = $427;
         $z$0$i = 0;
        } else {
         $515 = 1e9 / ($513 | 0) | 0;
         $a$085$i = 0;
         $carry$087$i = 0;
         $k$486$i = 0;
         $rp$084$i = $427;
         while (1) {
          $516 = $x$i + ($k$486$i << 2) | 0;
          $517 = HEAP32[$516 >> 2] | 0;
          $520 = (($517 >>> 0) / ($513 >>> 0) | 0) + $carry$087$i | 0;
          HEAP32[$516 >> 2] = $520;
          $521 = Math_imul(($517 >>> 0) % ($513 >>> 0) | 0, $515) | 0;
          $or$cond16$i = ($k$486$i | 0) == ($a$085$i | 0) & ($520 | 0) == 0;
          $k$486$i = $k$486$i + 1 | 0;
          $rp$1$i18 = $or$cond16$i ? $rp$084$i + -9 | 0 : $rp$084$i;
          $a$1$i = $or$cond16$i ? $k$486$i & 127 : $a$085$i;
          if (($k$486$i | 0) == ($k$3$i | 0)) {
           $$lcssa264 = $521;
           $a$1$i$lcssa = $a$1$i;
           $rp$1$i18$lcssa = $rp$1$i18;
           break;
          } else {
           $a$085$i = $a$1$i;
           $carry$087$i = $521;
           $rp$084$i = $rp$1$i18;
          }
         }
         if (!$$lcssa264) {
          $a$0$lcssa151$i = $a$1$i$lcssa;
          $rp$0$lcssa152$i = $rp$1$i18$lcssa;
          $z$0$i = $k$3$i;
         } else {
          HEAP32[$x$i + ($k$3$i << 2) >> 2] = $$lcssa264;
          $a$0$lcssa151$i = $a$1$i$lcssa;
          $rp$0$lcssa152$i = $rp$1$i18$lcssa;
          $z$0$i = $k$3$i + 1 | 0;
         }
        }
        $a$2$ph38$i = $a$0$lcssa151$i;
        $e2$0$ph$i = 0;
        $rp$2$ph36$i = 9 - $510 + $rp$0$lcssa152$i | 0;
        $z$1$ph37$i = $z$0$i;
       }
       L284 : while (1) {
        $533 = ($rp$2$ph36$i | 0) < 18;
        $534 = ($rp$2$ph36$i | 0) == 18;
        $535 = $x$i + ($a$2$ph38$i << 2) | 0;
        $e2$0$i19 = $e2$0$ph$i;
        $z$1$i = $z$1$ph37$i;
        while (1) {
         if (!$533) {
          if (!$534) {
           $a$3$ph$i = $a$2$ph38$i;
           $e2$1$ph$i = $e2$0$i19;
           $rp$3$ph34$i = $rp$2$ph36$i;
           $z$5$ph$i = $z$1$i;
           break L284;
          }
          if ((HEAP32[$535 >> 2] | 0) >>> 0 >= 9007199) {
           $a$3$ph$i = $a$2$ph38$i;
           $e2$1$ph$i = $e2$0$i19;
           $rp$3$ph34$i = 18;
           $z$5$ph$i = $z$1$i;
           break L284;
          }
         }
         $carry1$0$i = 0;
         $k$5$in$i = $z$1$i + 127 | 0;
         $z$2$i = $z$1$i;
         while (1) {
          $k$5$i = $k$5$in$i & 127;
          $539 = $x$i + ($k$5$i << 2) | 0;
          $541 = _bitshift64Shl(HEAP32[$539 >> 2] | 0, 0, 29) | 0;
          $543 = _i64Add($541 | 0, tempRet0 | 0, $carry1$0$i | 0, 0) | 0;
          $544 = tempRet0;
          if ($544 >>> 0 > 0 | ($544 | 0) == 0 & $543 >>> 0 > 1e9) {
           $550 = ___udivdi3($543 | 0, $544 | 0, 1e9, 0) | 0;
           $552 = ___uremdi3($543 | 0, $544 | 0, 1e9, 0) | 0;
           $$sink$off0$i = $552;
           $carry1$1$i = $550;
          } else {
           $$sink$off0$i = $543;
           $carry1$1$i = 0;
          }
          HEAP32[$539 >> 2] = $$sink$off0$i;
          $557 = ($k$5$i | 0) == ($a$2$ph38$i | 0);
          $z$3$i = ($k$5$i | 0) != ($z$2$i + 127 & 127 | 0) | $557 ? $z$2$i : ($$sink$off0$i | 0) == 0 ? $k$5$i : $z$2$i;
          if ($557) {
           $carry1$1$i$lcssa = $carry1$1$i;
           $z$3$i$lcssa = $z$3$i;
           break;
          } else {
           $carry1$0$i = $carry1$1$i;
           $k$5$in$i = $k$5$i + -1 | 0;
           $z$2$i = $z$3$i;
          }
         }
         $560 = $e2$0$i19 + -29 | 0;
         if (!$carry1$1$i$lcssa) {
          $e2$0$i19 = $560;
          $z$1$i = $z$3$i$lcssa;
         } else {
          $$lcssa263 = $560;
          $carry1$1$i$lcssa$lcssa = $carry1$1$i$lcssa;
          $z$3$i$lcssa$lcssa = $z$3$i$lcssa;
          break;
         }
        }
        $564 = $a$2$ph38$i + 127 & 127;
        if (($564 | 0) == ($z$3$i$lcssa$lcssa | 0)) {
         $567 = $z$3$i$lcssa$lcssa + 127 & 127;
         $572 = $x$i + (($z$3$i$lcssa$lcssa + 126 & 127) << 2) | 0;
         HEAP32[$572 >> 2] = HEAP32[$572 >> 2] | HEAP32[$x$i + ($567 << 2) >> 2];
         $z$4$i = $567;
        } else $z$4$i = $z$3$i$lcssa$lcssa;
        HEAP32[$x$i + ($564 << 2) >> 2] = $carry1$1$i$lcssa$lcssa;
        $a$2$ph38$i = $564;
        $e2$0$ph$i = $$lcssa263;
        $rp$2$ph36$i = $rp$2$ph36$i + 9 | 0;
        $z$1$ph37$i = $z$4$i;
       }
       L302 : while (1) {
        $604 = $z$5$ph$i + 1 & 127;
        $609 = $x$i + (($z$5$ph$i + 127 & 127) << 2) | 0;
        $a$3$ph157$i = $a$3$ph$i;
        $e2$1$ph156$i = $e2$1$ph$i;
        $rp$3$ph$i = $rp$3$ph34$i;
        while (1) {
         $610 = ($rp$3$ph$i | 0) == 18;
         $$18$i = ($rp$3$ph$i | 0) > 27 ? 9 : 1;
         $$not$i = $610 ^ 1;
         $a$3$i = $a$3$ph157$i;
         $e2$1$i = $e2$1$ph156$i;
         while (1) {
          $576 = $a$3$i & 127;
          $577 = ($576 | 0) == ($z$5$ph$i | 0);
          do if ($577) label = 219; else {
           $579 = HEAP32[$x$i + ($576 << 2) >> 2] | 0;
           if ($579 >>> 0 < 9007199) {
            label = 219;
            break;
           }
           if ($579 >>> 0 > 9007199) break;
           $583 = $a$3$i + 1 & 127;
           if (($583 | 0) == ($z$5$ph$i | 0)) {
            label = 219;
            break;
           }
           $691 = HEAP32[$x$i + ($583 << 2) >> 2] | 0;
           if ($691 >>> 0 < 254740991) {
            label = 219;
            break;
           }
           if (!($691 >>> 0 > 254740991 | $$not$i)) {
            $617 = $576;
            $a$3$i249 = $a$3$i;
            $e2$1$i246 = $e2$1$i;
            $z$7$i = $z$5$ph$i;
            break L302;
           }
          } while (0);
          if ((label | 0) == 219) {
           label = 0;
           if ($610) {
            label = 220;
            break L302;
           }
          }
          $585 = $e2$1$i + $$18$i | 0;
          if (($a$3$i | 0) == ($z$5$ph$i | 0)) {
           $a$3$i = $z$5$ph$i;
           $e2$1$i = $585;
          } else {
           $$lcssa256 = $585;
           $a$3$i$lcssa248 = $a$3$i;
           break;
          }
         }
         $588 = (1 << $$18$i) + -1 | 0;
         $589 = 1e9 >>> $$18$i;
         $a$478$i = $a$3$i$lcssa248;
         $carry3$081$i = 0;
         $k$679$i = $a$3$i$lcssa248;
         $rp$477$i = $rp$3$ph$i;
         while (1) {
          $590 = $x$i + ($k$679$i << 2) | 0;
          $591 = HEAP32[$590 >> 2] | 0;
          $594 = ($591 >>> $$18$i) + $carry3$081$i | 0;
          HEAP32[$590 >> 2] = $594;
          $595 = Math_imul($591 & $588, $589) | 0;
          $or$cond19$i = ($k$679$i | 0) == ($a$478$i | 0) & ($594 | 0) == 0;
          $k$679$i = $k$679$i + 1 & 127;
          $rp$5$i = $or$cond19$i ? $rp$477$i + -9 | 0 : $rp$477$i;
          $a$5$i = $or$cond19$i ? $k$679$i : $a$478$i;
          if (($k$679$i | 0) == ($z$5$ph$i | 0)) {
           $$lcssa257 = $595;
           $a$5$i$lcssa = $a$5$i;
           $rp$5$i$lcssa = $rp$5$i;
           break;
          } else {
           $a$478$i = $a$5$i;
           $carry3$081$i = $595;
           $rp$477$i = $rp$5$i;
          }
         }
         if (!$$lcssa257) {
          $a$3$ph157$i = $a$5$i$lcssa;
          $e2$1$ph156$i = $$lcssa256;
          $rp$3$ph$i = $rp$5$i$lcssa;
          continue;
         }
         if (($604 | 0) != ($a$5$i$lcssa | 0)) {
          $$lcssa256$lcssa = $$lcssa256;
          $$lcssa257$lcssa = $$lcssa257;
          $a$5$i$lcssa$lcssa = $a$5$i$lcssa;
          $rp$5$i$lcssa$lcssa = $rp$5$i$lcssa;
          break;
         }
         HEAP32[$609 >> 2] = HEAP32[$609 >> 2] | 1;
         $a$3$ph157$i = $a$5$i$lcssa;
         $e2$1$ph156$i = $$lcssa256;
         $rp$3$ph$i = $rp$5$i$lcssa;
        }
        HEAP32[$x$i + ($z$5$ph$i << 2) >> 2] = $$lcssa257$lcssa;
        $a$3$ph$i = $a$5$i$lcssa$lcssa;
        $e2$1$ph$i = $$lcssa256$lcssa;
        $rp$3$ph34$i = $rp$5$i$lcssa$lcssa;
        $z$5$ph$i = $604;
       }
       if ((label | 0) == 220) if ($577) {
        HEAP32[$x$i + ($604 + -1 << 2) >> 2] = 0;
        $617 = $z$5$ph$i;
        $a$3$i249 = $a$3$i;
        $e2$1$i246 = $e2$1$i;
        $z$7$i = $604;
       } else {
        $617 = $576;
        $a$3$i249 = $a$3$i;
        $e2$1$i246 = $e2$1$i;
        $z$7$i = $z$5$ph$i;
       }
       $619 = +((HEAP32[$x$i + ($617 << 2) >> 2] | 0) >>> 0);
       $621 = $a$3$i249 + 1 & 127;
       if (($621 | 0) == ($z$7$i | 0)) {
        $680 = $a$3$i249 + 2 & 127;
        HEAP32[$x$i + ($680 + -1 << 2) >> 2] = 0;
        $z$7$1$i = $680;
       } else $z$7$1$i = $z$7$i;
       $643 = +($sign$0 | 0);
       $625 = $643 * ($619 * 1.0e9 + +((HEAP32[$x$i + ($621 << 2) >> 2] | 0) >>> 0));
       $663 = $e2$1$i246 + 53 | 0;
       $669 = $663 - $emin$0$ph | 0;
       $670 = ($669 | 0) < ($bits$0$ph | 0);
       $denormal$0$i = $670 & 1;
       $$010$i = $670 ? (($669 | 0) < 0 ? 0 : $669) : $bits$0$ph;
       if (($$010$i | 0) < 53) {
        $626 = +_copysignl(+_scalbn(1.0, 105 - $$010$i | 0), $625);
        $629 = +_fmodl($625, +_scalbn(1.0, 53 - $$010$i | 0));
        $bias$0$i25 = $626;
        $frac$0$i = $629;
        $y$1$i24 = $626 + ($625 - $629);
       } else {
        $bias$0$i25 = 0.0;
        $frac$0$i = 0.0;
        $y$1$i24 = $625;
       }
       $633 = $a$3$i249 + 2 & 127;
       do if (($633 | 0) == ($z$7$1$i | 0)) $frac$2$i = $frac$0$i; else {
        $636 = HEAP32[$x$i + ($633 << 2) >> 2] | 0;
        do if ($636 >>> 0 < 5e8) {
         if (!$636) if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) {
          $frac$1$i = $frac$0$i;
          break;
         }
         $frac$1$i = $643 * .25 + $frac$0$i;
        } else {
         if ($636 >>> 0 > 5e8) {
          $frac$1$i = $643 * .75 + $frac$0$i;
          break;
         }
         if (($a$3$i249 + 3 & 127 | 0) == ($z$7$1$i | 0)) {
          $frac$1$i = $643 * .5 + $frac$0$i;
          break;
         } else {
          $frac$1$i = $643 * .75 + $frac$0$i;
          break;
         }
        } while (0);
        if ((53 - $$010$i | 0) <= 1) {
         $frac$2$i = $frac$1$i;
         break;
        }
        if (+_fmodl($frac$1$i, 1.0) != 0.0) {
         $frac$2$i = $frac$1$i;
         break;
        }
        $frac$2$i = $frac$1$i + 1.0;
       } while (0);
       $661 = $y$1$i24 + $frac$2$i - $bias$0$i25;
       do if (($663 & 2147483647 | 0) > (-2 - $sum$i | 0)) {
        if (!(+Math_abs(+$661) >= 9007199254740992.0)) {
         $denormal$2$i = $denormal$0$i;
         $e2$2$i = $e2$1$i246;
         $y$2$i26 = $661;
        } else {
         $denormal$2$i = $670 & ($$010$i | 0) == ($669 | 0) ? 0 : $denormal$0$i;
         $e2$2$i = $e2$1$i246 + 1 | 0;
         $y$2$i26 = $661 * .5;
        }
        if (($e2$2$i + 50 | 0) <= ($330 | 0)) if (!($frac$2$i != 0.0 & ($denormal$2$i | 0) != 0)) {
         $e2$3$i = $e2$2$i;
         $y$3$i = $y$2$i26;
         break;
        }
        $677 = ___errno_location() | 0;
        HEAP32[$677 >> 2] = 34;
        $e2$3$i = $e2$2$i;
        $y$3$i = $y$2$i26;
       } else {
        $e2$3$i = $e2$1$i246;
        $y$3$i = $661;
       } while (0);
       $$0$i27 = +_scalbnl($y$3$i, $e2$3$i);
      } while (0);
      $$0 = $$0$i27;
      break L4;
      break;
     }
    default:
     {
      if (HEAP32[$1 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
      $113 = ___errno_location() | 0;
      HEAP32[$113 >> 2] = 22;
      ___shlim($f, 0);
      $$0 = 0.0;
      break L4;
     }
    }
   }
  } while (0);
  if ((label | 0) == 23) {
   $42 = (HEAP32[$1 >> 2] | 0) == 0;
   if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
   if (($pok | 0) != 0 & $i$0$lcssa >>> 0 > 3) {
    $i$1 = $i$0$lcssa;
    do {
     if (!$42) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
     $i$1 = $i$1 + -1 | 0;
    } while ($i$1 >>> 0 > 3);
   }
  }
  $$0 = +($sign$0 | 0) * inf;
 } while (0);
 STACKTOP = sp;
 return +$$0;
}

function __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i16$i = 0, $$0$i$i$i23$i = 0, $$0$i$i$i33$i = 0, $$0$i$i$i42$i = 0, $$0$i$i$i52$i = 0, $$0$i10 = 0, $$02 = 0, $$07$i = 0, $$first = 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, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $129 = 0, $13 = 0, $130 = 0, $134 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $144 = 0, $145 = 0, $15 = 0, $153 = 0, $154 = 0, $156 = 0, $16 = 0, $164 = 0, $166 = 0, $167 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $211 = 0, $212 = 0, $220 = 0, $221 = 0, $223 = 0, $23 = 0, $231 = 0, $233 = 0, $234 = 0, $247 = 0, $248 = 0, $249 = 0, $250 = 0, $253 = 0, $256 = 0, $259 = 0, $268 = 0, $271 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $281 = 0, $282 = 0, $290 = 0, $291 = 0, $293 = 0, $3 = 0, $30 = 0, $301 = 0, $303 = 0, $304 = 0, $317 = 0, $318 = 0, $319 = 0, $320 = 0, $323 = 0, $326 = 0, $329 = 0, $338 = 0, $34 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $349 = 0, $35 = 0, $351 = 0, $359 = 0, $361 = 0, $362 = 0, $37 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $381 = 0, $384 = 0, $387 = 0, $398 = 0, $4 = 0, $400 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $41 = 0, $410 = 0, $411 = 0, $419 = 0, $420 = 0, $422 = 0, $430 = 0, $432 = 0, $433 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $452 = 0, $455 = 0, $458 = 0, $469 = 0, $474 = 0, $476 = 0, $477 = 0, $478 = 0, $483 = 0, $484 = 0, $489 = 0, $49 = 0, $494 = 0, $497 = 0, $5 = 0, $50 = 0, $500 = 0, $502 = 0, $506 = 0, $507 = 0, $509 = 0, $51 = 0, $510 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $526 = 0, $528 = 0, $538 = 0, $539 = 0, $540 = 0, $542 = 0, $544 = 0, $545 = 0, $546 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $56 = 0, $562 = 0, $564 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $58 = 0, $588 = 0, $593 = 0, $594 = 0, $597 = 0, $6 = 0, $605 = 0, $606 = 0, $608 = 0, $61 = 0, $612 = 0, $613 = 0, $615 = 0, $62 = 0, $622 = 0, $624 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $638 = 0, $641 = 0, $644 = 0, $645 = 0, $65 = 0, $651 = 0, $653 = 0, $657 = 0, $659 = 0, $667 = 0, $668 = 0, $669 = 0, $670 = 0, $673 = 0, $675 = 0, $685 = 0, $690 = 0, $692 = 0, $693 = 0, $7 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $707 = 0, $709 = 0, $719 = 0, $8 = 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, $99 = 0, $St$0$off0$i = 0, $__v$i$i51$i = 0, $cv$i = 0, $name$i11 = 0, $name1$i = 0, $name2$i12 = 0, $name3$i = 0, $name4$i = 0, $pop_subs$0$off0$i$ph$lcssa = 0, $pop_subs$0$off0$i$ph136 = 0, $t0$0$i = 0, $t0$0$i13 = 0, $t0$1$i = 0, $t0$2$i$be = 0, $t0$2$i$lcssa = 0, $t0$2$i$ph$be = 0, $t0$2$i$ph135 = 0, $t0$2$i131 = 0, $t0$2$i131$lcssa177 = 0, $t0$2$i131$lcssa178 = 0, $t0$2$i131$lcssa179 = 0, $t0$2$i131184 = 0, $tmp = 0, $tmp3 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i51$i = sp + 276 | 0;
 $cv$i = sp + 264 | 0;
 $name$i11 = sp + 252 | 0;
 $0 = sp + 240 | 0;
 $1 = sp + 224 | 0;
 $2 = sp + 216 | 0;
 $name1$i = sp + 204 | 0;
 $3 = sp + 192 | 0;
 $4 = sp + 176 | 0;
 $5 = sp + 168 | 0;
 $name2$i12 = sp + 156 | 0;
 $6 = sp + 144 | 0;
 $7 = sp + 128 | 0;
 $8 = sp + 124 | 0;
 $name3$i = sp + 112 | 0;
 $9 = sp + 96 | 0;
 $10 = sp + 76 | 0;
 $name4$i = sp + 64 | 0;
 $11 = sp + 48 | 0;
 $12 = sp + 8 | 0;
 $13 = sp;
 $14 = sp + 80 | 0;
 $15 = sp + 60 | 0;
 $tmp = sp + 36 | 0;
 $tmp3 = sp + 24 | 0;
 $16 = $last;
 L1 : do if (($16 - $first | 0) > 1) {
  $$first = (HEAP8[$first >> 0] | 0) == 76 ? $first + 1 | 0 : $first;
  $23 = HEAP8[$$first >> 0] | 0;
  switch ($23 << 24 >> 24 | 0) {
  case 78:
   {
    L44 : do if (($$first | 0) == ($last | 0)) $$07$i = $last; else if ($23 << 24 >> 24 == 78) {
     $28 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($$first + 1 | 0, $last, $cv$i) | 0;
     if (($28 | 0) == ($last | 0)) $$07$i = $$first; else {
      $30 = $db + 52 | 0;
      HEAP32[$30 >> 2] = 0;
      switch (HEAP8[$28 >> 0] | 0) {
      case 82:
       {
        HEAP32[$30 >> 2] = 1;
        $t0$0$i13 = $28 + 1 | 0;
        break;
       }
      case 79:
       {
        HEAP32[$30 >> 2] = 2;
        $t0$0$i13 = $28 + 1 | 0;
        break;
       }
      default:
       $t0$0$i13 = $28;
      }
      $34 = $db + 4 | 0;
      $35 = HEAP32[$34 >> 2] | 0;
      $37 = HEAP32[$db + 8 >> 2] | 0;
      if ($35 >>> 0 < $37 >>> 0) {
       HEAP32[$35 >> 2] = 0;
       HEAP32[$35 + 4 >> 2] = 0;
       HEAP32[$35 + 8 >> 2] = 0;
       HEAP32[$35 + 12 >> 2] = 0;
       HEAP32[$35 + 16 >> 2] = 0;
       HEAP32[$35 + 20 >> 2] = 0;
       HEAP32[$35 >> 2] = 0;
       HEAP32[$35 + 4 >> 2] = 0;
       HEAP32[$35 + 8 >> 2] = 0;
       $41 = $35 + 12 | 0;
       HEAP32[$41 >> 2] = 0;
       HEAP32[$41 + 4 >> 2] = 0;
       HEAP32[$41 + 8 >> 2] = 0;
       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 24;
      } else {
       $49 = HEAP32[$db >> 2] | 0;
       $50 = $35 - $49 | 0;
       $51 = ($50 | 0) / 24 | 0;
       $52 = $51 + 1 | 0;
       if (($50 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $56 = ($37 - $49 | 0) / 24 | 0;
       if ($56 >>> 0 < 1073741823) {
        $58 = $56 << 1;
        $$0$i$i$i$i = $58 >>> 0 < $52 >>> 0 ? $52 : $58;
       } else $$0$i$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i51$i, $$0$i$i$i$i, $51, $db + 12 | 0);
       $61 = $__v$i$i51$i + 8 | 0;
       $62 = HEAP32[$61 >> 2] | 0;
       HEAP32[$62 >> 2] = 0;
       HEAP32[$62 + 4 >> 2] = 0;
       HEAP32[$62 + 8 >> 2] = 0;
       HEAP32[$62 + 12 >> 2] = 0;
       HEAP32[$62 + 16 >> 2] = 0;
       HEAP32[$62 + 20 >> 2] = 0;
       HEAP32[$62 >> 2] = 0;
       HEAP32[$62 + 4 >> 2] = 0;
       HEAP32[$62 + 8 >> 2] = 0;
       $65 = $62 + 12 | 0;
       HEAP32[$65 >> 2] = 0;
       HEAP32[$65 + 4 >> 2] = 0;
       HEAP32[$65 + 8 >> 2] = 0;
       HEAP32[$61 >> 2] = $62 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i51$i);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i51$i);
      }
      if (($16 - $t0$0$i13 | 0) > 1) if ((HEAP8[$t0$0$i13 >> 0] | 0) == 83) if ((HEAP8[$t0$0$i13 + 1 >> 0] | 0) == 116) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj((HEAP32[$34 >> 2] | 0) + -24 | 0, 12898, 3);
       $t0$1$i = $t0$0$i13 + 2 | 0;
      } else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13; else $t0$1$i = $t0$0$i13;
      if (($t0$1$i | 0) == ($last | 0)) {
       $123 = HEAP32[$34 >> 2] | 0;
       $124 = $123 + -24 | 0;
       $126 = $123;
       while (1) {
        $125 = $126 + -24 | 0;
        HEAP32[$34 >> 2] = $125;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($125);
        $126 = HEAP32[$34 >> 2] | 0;
        if (($126 | 0) == ($124 | 0)) {
         $$07$i = $$first;
         break L44;
        }
       }
      }
      $81 = $name3$i + 8 | 0;
      $82 = $name3$i + 1 | 0;
      $83 = $name3$i + 4 | 0;
      $84 = $db + 12 | 0;
      $85 = $db + 16 | 0;
      $86 = $db + 20 | 0;
      $87 = $db + 24 | 0;
      $88 = $9 + 12 | 0;
      $89 = $9 + 4 | 0;
      $90 = $9 + 8 | 0;
      $91 = $db + 28 | 0;
      $92 = $__v$i$i51$i + 8 | 0;
      $93 = $12 + 12 | 0;
      $94 = $12 + 4 | 0;
      $95 = $12 + 8 | 0;
      $96 = $__v$i$i51$i + 8 | 0;
      $97 = $11 + 8 | 0;
      $98 = $11 + 1 | 0;
      $99 = $11 + 4 | 0;
      $100 = $0 + 8 | 0;
      $101 = $0 + 1 | 0;
      $102 = $0 + 4 | 0;
      $103 = $1 + 12 | 0;
      $104 = $1 + 4 | 0;
      $105 = $1 + 8 | 0;
      $106 = $__v$i$i51$i + 8 | 0;
      $107 = $4 + 12 | 0;
      $108 = $4 + 4 | 0;
      $109 = $4 + 8 | 0;
      $110 = $__v$i$i51$i + 8 | 0;
      $111 = $3 + 8 | 0;
      $112 = $3 + 1 | 0;
      $113 = $3 + 4 | 0;
      $114 = $7 + 12 | 0;
      $115 = $7 + 4 | 0;
      $116 = $7 + 8 | 0;
      $117 = $__v$i$i51$i + 8 | 0;
      $118 = $6 + 8 | 0;
      $119 = $6 + 1 | 0;
      $120 = $6 + 4 | 0;
      $121 = HEAP8[$t0$1$i >> 0] | 0;
      L72 : do if ($121 << 24 >> 24 == 69) {
       $pop_subs$0$off0$i$ph$lcssa = 0;
       $t0$2$i$lcssa = $t0$1$i;
      } else {
       $719 = $121;
       $pop_subs$0$off0$i$ph136 = 0;
       $t0$2$i$ph135 = $t0$1$i;
       L73 : while (1) {
        $129 = $719;
        $t0$2$i131 = $t0$2$i$ph135;
        L75 : while (1) {
         switch ($129 << 24 >> 24 | 0) {
         case 83:
          {
           $t0$2$i131$lcssa177 = $t0$2$i131;
           label = 25;
           break L75;
           break;
          }
         case 84:
          {
           $t0$2$i131$lcssa178 = $t0$2$i131;
           label = 44;
           break L75;
           break;
          }
         case 68:
          {
           $t0$2$i131$lcssa179 = $t0$2$i131;
           label = 61;
           break L75;
           break;
          }
         case 73:
          {
           $338 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131, $last, $db) | 0;
           if (($338 | 0) == ($t0$2$i131 | 0) | ($338 | 0) == ($last | 0)) {
            $$07$i = $$first;
            break L44;
           }
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name3$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);
           $343 = HEAP32[$34 >> 2] | 0;
           $344 = $343 + -24 | 0;
           $346 = $343;
           do {
            $345 = $346 + -24 | 0;
            HEAP32[$34 >> 2] = $345;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($345);
            $346 = HEAP32[$34 >> 2] | 0;
           } while (($346 | 0) != ($344 | 0));
           $349 = HEAP8[$name3$i >> 0] | 0;
           $351 = ($349 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($343 + -48 | 0, $351 ? $82 : HEAP32[$81 >> 2] | 0, $351 ? ($349 & 255) >>> 1 : HEAP32[$83 >> 2] | 0) | 0;
           $359 = (HEAP32[$34 >> 2] | 0) + -24 | 0;
           HEAP32[$10 >> 2] = HEAP32[$84 >> 2];
           __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($9, $359, $10);
           $361 = HEAP32[$86 >> 2] | 0;
           $362 = HEAP32[$87 >> 2] | 0;
           if ($361 >>> 0 < $362 >>> 0) {
            HEAP32[$361 + 12 >> 2] = HEAP32[$88 >> 2];
            HEAP32[$361 >> 2] = HEAP32[$9 >> 2];
            HEAP32[$361 + 4 >> 2] = HEAP32[$89 >> 2];
            HEAP32[$361 + 8 >> 2] = HEAP32[$90 >> 2];
            HEAP32[$90 >> 2] = 0;
            HEAP32[$89 >> 2] = 0;
            HEAP32[$9 >> 2] = 0;
            HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;
           } else {
            $375 = HEAP32[$85 >> 2] | 0;
            $376 = $361 - $375 | 0;
            $377 = $376 >> 4;
            $378 = $377 + 1 | 0;
            if (($376 | 0) < -16) {
             label = 86;
             break L73;
            }
            $381 = $362 - $375 | 0;
            if ($381 >> 4 >>> 0 < 1073741823) {
             $384 = $381 >> 3;
             $$0$i$i$i42$i = $384 >>> 0 < $378 >>> 0 ? $378 : $384;
            } else $$0$i$i$i42$i = 2147483647;
            __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i42$i, $377, $91);
            $387 = HEAP32[$92 >> 2] | 0;
            HEAP32[$387 + 12 >> 2] = HEAP32[$88 >> 2];
            HEAP32[$387 >> 2] = HEAP32[$9 >> 2];
            HEAP32[$387 + 4 >> 2] = HEAP32[$89 >> 2];
            HEAP32[$387 + 8 >> 2] = HEAP32[$90 >> 2];
            HEAP32[$90 >> 2] = 0;
            HEAP32[$89 >> 2] = 0;
            HEAP32[$9 >> 2] = 0;
            HEAP32[$92 >> 2] = $387 + 16;
            __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);
            __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
           }
           __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($9);
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name3$i);
           $t0$2$i$be = $338;
           break;
          }
         case 76:
          {
           $398 = $t0$2$i131 + 1 | 0;
           if (($398 | 0) == ($last | 0)) {
            $$07$i = $$first;
            break L44;
           } else $t0$2$i$be = $398;
           break;
          }
         default:
          {
           $t0$2$i131184 = $t0$2$i131;
           label = 93;
           break L75;
          }
         }
         $129 = HEAP8[$t0$2$i$be >> 0] | 0;
         if ($129 << 24 >> 24 == 69) {
          $pop_subs$0$off0$i$ph$lcssa = $pop_subs$0$off0$i$ph136;
          $t0$2$i$lcssa = $t0$2$i$be;
          break L72;
         } else $t0$2$i131 = $t0$2$i$be;
        }
        L93 : do if ((label | 0) == 25) {
         label = 0;
         $130 = $t0$2$i131$lcssa177 + 1 | 0;
         if (($130 | 0) != ($last | 0)) if ((HEAP8[$130 >> 0] | 0) == 116) {
          $t0$2$i131184 = $t0$2$i131$lcssa177;
          label = 93;
          break;
         }
         $134 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa177, $last, $db) | 0;
         if (($134 | 0) == ($t0$2$i131$lcssa177 | 0) | ($134 | 0) == ($last | 0)) {
          $$07$i = $$first;
          break L44;
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name$i11, (HEAP32[$34 >> 2] | 0) + -24 | 0);
         $139 = HEAP32[$34 >> 2] | 0;
         $140 = $139 + -24 | 0;
         $142 = $139;
         do {
          $141 = $142 + -24 | 0;
          HEAP32[$34 >> 2] = $141;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($141);
          $142 = HEAP32[$34 >> 2] | 0;
         } while (($142 | 0) != ($140 | 0));
         $144 = $139 + -48 | 0;
         $145 = HEAP8[$144 >> 0] | 0;
         if (!($145 & 1)) $153 = ($145 & 255) >>> 1; else $153 = HEAP32[$139 + -44 >> 2] | 0;
         if (!$153) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($144, $name$i11); else {
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($0, 12902, $name$i11);
          $154 = HEAP8[$0 >> 0] | 0;
          $156 = ($154 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($144, $156 ? $101 : HEAP32[$100 >> 2] | 0, $156 ? ($154 & 255) >>> 1 : HEAP32[$102 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
          $164 = (HEAP32[$34 >> 2] | 0) + -24 | 0;
          HEAP32[$2 >> 2] = HEAP32[$84 >> 2];
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($1, $164, $2);
          $166 = HEAP32[$86 >> 2] | 0;
          $167 = HEAP32[$87 >> 2] | 0;
          if ($166 >>> 0 < $167 >>> 0) {
           HEAP32[$166 + 12 >> 2] = HEAP32[$103 >> 2];
           HEAP32[$166 >> 2] = HEAP32[$1 >> 2];
           HEAP32[$166 + 4 >> 2] = HEAP32[$104 >> 2];
           HEAP32[$166 + 8 >> 2] = HEAP32[$105 >> 2];
           HEAP32[$105 >> 2] = 0;
           HEAP32[$104 >> 2] = 0;
           HEAP32[$1 >> 2] = 0;
           HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;
          } else {
           $180 = HEAP32[$85 >> 2] | 0;
           $181 = $166 - $180 | 0;
           $182 = $181 >> 4;
           $183 = $182 + 1 | 0;
           if (($181 | 0) < -16) {
            label = 37;
            break L73;
           }
           $186 = $167 - $180 | 0;
           if ($186 >> 4 >>> 0 < 1073741823) {
            $189 = $186 >> 3;
            $$0$i$i$i16$i = $189 >>> 0 < $183 >>> 0 ? $183 : $189;
           } else $$0$i$i$i16$i = 2147483647;
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i16$i, $182, $91);
           $192 = HEAP32[$106 >> 2] | 0;
           HEAP32[$192 + 12 >> 2] = HEAP32[$103 >> 2];
           HEAP32[$192 >> 2] = HEAP32[$1 >> 2];
           HEAP32[$192 + 4 >> 2] = HEAP32[$104 >> 2];
           HEAP32[$192 + 8 >> 2] = HEAP32[$105 >> 2];
           HEAP32[$105 >> 2] = 0;
           HEAP32[$104 >> 2] = 0;
           HEAP32[$1 >> 2] = 0;
           HEAP32[$106 >> 2] = $192 + 16;
           __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);
           __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
          }
          __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($1);
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name$i11);
         $t0$2$i$ph$be = $134;
        } else if ((label | 0) == 44) {
         label = 0;
         $201 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa178, $last, $db) | 0;
         if (($201 | 0) == ($t0$2$i131$lcssa178 | 0) | ($201 | 0) == ($last | 0)) {
          $$07$i = $$first;
          break L44;
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name1$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);
         $206 = HEAP32[$34 >> 2] | 0;
         $207 = $206 + -24 | 0;
         $209 = $206;
         do {
          $208 = $209 + -24 | 0;
          HEAP32[$34 >> 2] = $208;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($208);
          $209 = HEAP32[$34 >> 2] | 0;
         } while (($209 | 0) != ($207 | 0));
         $211 = $206 + -48 | 0;
         $212 = HEAP8[$211 >> 0] | 0;
         if (!($212 & 1)) $220 = ($212 & 255) >>> 1; else $220 = HEAP32[$206 + -44 >> 2] | 0;
         if (!$220) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($211, $name1$i); else {
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($3, 12902, $name1$i);
          $221 = HEAP8[$3 >> 0] | 0;
          $223 = ($221 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($211, $223 ? $112 : HEAP32[$111 >> 2] | 0, $223 ? ($221 & 255) >>> 1 : HEAP32[$113 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
         }
         $231 = (HEAP32[$34 >> 2] | 0) + -24 | 0;
         HEAP32[$5 >> 2] = HEAP32[$84 >> 2];
         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $231, $5);
         $233 = HEAP32[$86 >> 2] | 0;
         $234 = HEAP32[$87 >> 2] | 0;
         if ($233 >>> 0 < $234 >>> 0) {
          HEAP32[$233 + 12 >> 2] = HEAP32[$107 >> 2];
          HEAP32[$233 >> 2] = HEAP32[$4 >> 2];
          HEAP32[$233 + 4 >> 2] = HEAP32[$108 >> 2];
          HEAP32[$233 + 8 >> 2] = HEAP32[$109 >> 2];
          HEAP32[$109 >> 2] = 0;
          HEAP32[$108 >> 2] = 0;
          HEAP32[$4 >> 2] = 0;
          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;
         } else {
          $247 = HEAP32[$85 >> 2] | 0;
          $248 = $233 - $247 | 0;
          $249 = $248 >> 4;
          $250 = $249 + 1 | 0;
          if (($248 | 0) < -16) {
           label = 56;
           break L73;
          }
          $253 = $234 - $247 | 0;
          if ($253 >> 4 >>> 0 < 1073741823) {
           $256 = $253 >> 3;
           $$0$i$i$i23$i = $256 >>> 0 < $250 >>> 0 ? $250 : $256;
          } else $$0$i$i$i23$i = 2147483647;
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i23$i, $249, $91);
          $259 = HEAP32[$110 >> 2] | 0;
          HEAP32[$259 + 12 >> 2] = HEAP32[$107 >> 2];
          HEAP32[$259 >> 2] = HEAP32[$4 >> 2];
          HEAP32[$259 + 4 >> 2] = HEAP32[$108 >> 2];
          HEAP32[$259 + 8 >> 2] = HEAP32[$109 >> 2];
          HEAP32[$109 >> 2] = 0;
          HEAP32[$108 >> 2] = 0;
          HEAP32[$4 >> 2] = 0;
          HEAP32[$110 >> 2] = $259 + 16;
          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
         }
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name1$i);
         $t0$2$i$ph$be = $201;
        } else if ((label | 0) == 61) {
         label = 0;
         $268 = $t0$2$i131$lcssa179 + 1 | 0;
         if (($268 | 0) != ($last | 0)) switch (HEAP8[$268 >> 0] | 0) {
         case 84:
         case 116:
          break;
         default:
          {
           $t0$2$i131184 = $t0$2$i131$lcssa179;
           label = 93;
           break L93;
          }
         }
         $271 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131$lcssa179, $last, $db) | 0;
         if (($271 | 0) == ($t0$2$i131$lcssa179 | 0) | ($271 | 0) == ($last | 0)) {
          $$07$i = $$first;
          break L44;
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name2$i12, (HEAP32[$34 >> 2] | 0) + -24 | 0);
         $276 = HEAP32[$34 >> 2] | 0;
         $277 = $276 + -24 | 0;
         $279 = $276;
         do {
          $278 = $279 + -24 | 0;
          HEAP32[$34 >> 2] = $278;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($278);
          $279 = HEAP32[$34 >> 2] | 0;
         } while (($279 | 0) != ($277 | 0));
         $281 = $276 + -48 | 0;
         $282 = HEAP8[$281 >> 0] | 0;
         if (!($282 & 1)) $290 = ($282 & 255) >>> 1; else $290 = HEAP32[$276 + -44 >> 2] | 0;
         if (!$290) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($281, $name2$i12); else {
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($6, 12902, $name2$i12);
          $291 = HEAP8[$6 >> 0] | 0;
          $293 = ($291 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($281, $293 ? $119 : HEAP32[$118 >> 2] | 0, $293 ? ($291 & 255) >>> 1 : HEAP32[$120 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
         }
         $301 = (HEAP32[$34 >> 2] | 0) + -24 | 0;
         HEAP32[$8 >> 2] = HEAP32[$84 >> 2];
         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($7, $301, $8);
         $303 = HEAP32[$86 >> 2] | 0;
         $304 = HEAP32[$87 >> 2] | 0;
         if ($303 >>> 0 < $304 >>> 0) {
          HEAP32[$303 + 12 >> 2] = HEAP32[$114 >> 2];
          HEAP32[$303 >> 2] = HEAP32[$7 >> 2];
          HEAP32[$303 + 4 >> 2] = HEAP32[$115 >> 2];
          HEAP32[$303 + 8 >> 2] = HEAP32[$116 >> 2];
          HEAP32[$116 >> 2] = 0;
          HEAP32[$115 >> 2] = 0;
          HEAP32[$7 >> 2] = 0;
          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;
         } else {
          $317 = HEAP32[$85 >> 2] | 0;
          $318 = $303 - $317 | 0;
          $319 = $318 >> 4;
          $320 = $319 + 1 | 0;
          if (($318 | 0) < -16) {
           label = 75;
           break L73;
          }
          $323 = $304 - $317 | 0;
          if ($323 >> 4 >>> 0 < 1073741823) {
           $326 = $323 >> 3;
           $$0$i$i$i33$i = $326 >>> 0 < $320 >>> 0 ? $320 : $326;
          } else $$0$i$i$i33$i = 2147483647;
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i33$i, $319, $91);
          $329 = HEAP32[$117 >> 2] | 0;
          HEAP32[$329 + 12 >> 2] = HEAP32[$114 >> 2];
          HEAP32[$329 >> 2] = HEAP32[$7 >> 2];
          HEAP32[$329 + 4 >> 2] = HEAP32[$115 >> 2];
          HEAP32[$329 + 8 >> 2] = HEAP32[$116 >> 2];
          HEAP32[$116 >> 2] = 0;
          HEAP32[$115 >> 2] = 0;
          HEAP32[$7 >> 2] = 0;
          HEAP32[$117 >> 2] = $329 + 16;
          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
         }
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($7);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name2$i12);
         $t0$2$i$ph$be = $271;
        } while (0);
        if ((label | 0) == 93) {
         label = 0;
         $400 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$2$i131184, $last, $db) | 0;
         if (($400 | 0) == ($t0$2$i131184 | 0) | ($400 | 0) == ($last | 0)) {
          $$07$i = $$first;
          break L44;
         }
         __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($name4$i, (HEAP32[$34 >> 2] | 0) + -24 | 0);
         $405 = HEAP32[$34 >> 2] | 0;
         $406 = $405 + -24 | 0;
         $408 = $405;
         do {
          $407 = $408 + -24 | 0;
          HEAP32[$34 >> 2] = $407;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($407);
          $408 = HEAP32[$34 >> 2] | 0;
         } while (($408 | 0) != ($406 | 0));
         $410 = $405 + -48 | 0;
         $411 = HEAP8[$410 >> 0] | 0;
         if (!($411 & 1)) $419 = ($411 & 255) >>> 1; else $419 = HEAP32[$405 + -44 >> 2] | 0;
         if (!$419) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($410, $name4$i); else {
          __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($11, 12902, $name4$i);
          $420 = HEAP8[$11 >> 0] | 0;
          $422 = ($420 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($410, $422 ? $98 : HEAP32[$97 >> 2] | 0, $422 ? ($420 & 255) >>> 1 : HEAP32[$99 >> 2] | 0) | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11);
         }
         $430 = (HEAP32[$34 >> 2] | 0) + -24 | 0;
         HEAP32[$13 >> 2] = HEAP32[$84 >> 2];
         __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($12, $430, $13);
         $432 = HEAP32[$86 >> 2] | 0;
         $433 = HEAP32[$87 >> 2] | 0;
         if ($432 >>> 0 < $433 >>> 0) {
          HEAP32[$432 + 12 >> 2] = HEAP32[$93 >> 2];
          HEAP32[$432 >> 2] = HEAP32[$12 >> 2];
          HEAP32[$432 + 4 >> 2] = HEAP32[$94 >> 2];
          HEAP32[$432 + 8 >> 2] = HEAP32[$95 >> 2];
          HEAP32[$95 >> 2] = 0;
          HEAP32[$94 >> 2] = 0;
          HEAP32[$12 >> 2] = 0;
          HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 16;
         } else {
          $446 = HEAP32[$85 >> 2] | 0;
          $447 = $432 - $446 | 0;
          $448 = $447 >> 4;
          $449 = $448 + 1 | 0;
          if (($447 | 0) < -16) {
           label = 105;
           break;
          }
          $452 = $433 - $446 | 0;
          if ($452 >> 4 >>> 0 < 1073741823) {
           $455 = $452 >> 3;
           $$0$i$i$i52$i = $455 >>> 0 < $449 >>> 0 ? $449 : $455;
          } else $$0$i$i$i52$i = 2147483647;
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i52$i, $448, $91);
          $458 = HEAP32[$96 >> 2] | 0;
          HEAP32[$458 + 12 >> 2] = HEAP32[$93 >> 2];
          HEAP32[$458 >> 2] = HEAP32[$12 >> 2];
          HEAP32[$458 + 4 >> 2] = HEAP32[$94 >> 2];
          HEAP32[$458 + 8 >> 2] = HEAP32[$95 >> 2];
          HEAP32[$95 >> 2] = 0;
          HEAP32[$94 >> 2] = 0;
          HEAP32[$12 >> 2] = 0;
          HEAP32[$96 >> 2] = $458 + 16;
          __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($85, $__v$i$i51$i);
          __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
         }
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($12);
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($name4$i);
         $t0$2$i$ph$be = $400;
        }
        $719 = HEAP8[$t0$2$i$ph$be >> 0] | 0;
        if ($719 << 24 >> 24 == 69) {
         $pop_subs$0$off0$i$ph$lcssa = 1;
         $t0$2$i$lcssa = $t0$2$i$ph$be;
         break L72;
        } else {
         $pop_subs$0$off0$i$ph136 = 1;
         $t0$2$i$ph135 = $t0$2$i$ph$be;
        }
       }
       if ((label | 0) == 37) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 56) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 75) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 86) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85); else if ((label | 0) == 105) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($85);
      } while (0);
      $469 = $t0$2$i$lcssa + 1 | 0;
      HEAP32[$db + 48 >> 2] = HEAP32[$cv$i >> 2];
      if ($pop_subs$0$off0$i$ph$lcssa) {
       $474 = HEAP32[$86 >> 2] | 0;
       if ((HEAP32[$db + 16 >> 2] | 0) == ($474 | 0)) $$07$i = $469; else {
        $476 = $474 + -16 | 0;
        $478 = $474;
        do {
         $477 = $478 + -16 | 0;
         HEAP32[$86 >> 2] = $477;
         __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($477);
         $478 = HEAP32[$86 >> 2] | 0;
        } while (($478 | 0) != ($476 | 0));
        $$07$i = $469;
       }
      } else $$07$i = $469;
     }
    } else $$07$i = $$first; while (0);
    $$02 = ($$07$i | 0) == ($$first | 0) ? $first : $$07$i;
    break L1;
    break;
   }
  case 90:
   {
    L199 : do if (($$first | 0) == ($last | 0)) $$0$i10 = $last; else if ($23 << 24 >> 24 == 90) {
     $483 = $$first + 1 | 0;
     $484 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($483, $last, $db) | 0;
     if (($484 | 0) == ($483 | 0) | ($484 | 0) == ($last | 0)) $$0$i10 = $$first; else if ((HEAP8[$484 >> 0] | 0) == 69) {
      $489 = $484 + 1 | 0;
      if (($489 | 0) == ($last | 0)) $$0$i10 = $$first; else switch (HEAP8[$489 >> 0] | 0) {
      case 115:
       {
        $494 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($484 + 2 | 0, $last) | 0;
        $497 = HEAP32[$db + 4 >> 2] | 0;
        if ((HEAP32[$db >> 2] | 0) == ($497 | 0)) {
         $$0$i10 = $494;
         break L199;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($497 + -24 | 0, 12905) | 0;
        $$0$i10 = $494;
        break L199;
        break;
       }
      case 100:
       {
        $500 = $484 + 2 | 0;
        if (($500 | 0) == ($last | 0)) {
         $$0$i10 = $$first;
         break L199;
        }
        $502 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($500, $last) | 0;
        if (($502 | 0) == ($last | 0)) {
         $$0$i10 = $$first;
         break L199;
        }
        if ((HEAP8[$502 >> 0] | 0) != 95) {
         $$0$i10 = $$first;
         break L199;
        }
        $506 = $502 + 1 | 0;
        $507 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($506, $last, $db) | 0;
        $509 = $db + 4 | 0;
        $510 = HEAP32[$509 >> 2] | 0;
        if (($507 | 0) == ($506 | 0)) {
         $538 = $510 + -24 | 0;
         $540 = $510;
         while (1) {
          $539 = $540 + -24 | 0;
          HEAP32[$509 >> 2] = $539;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($539);
          $540 = HEAP32[$509 >> 2] | 0;
          if (($540 | 0) == ($538 | 0)) {
           $$0$i10 = $$first;
           break L199;
          }
         }
        }
        if ((($510 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
         $$0$i10 = $$first;
         break L199;
        }
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($__v$i$i51$i, $510 + -24 | 0);
        $518 = HEAP32[$509 >> 2] | 0;
        $519 = $518 + -24 | 0;
        $521 = $518;
        do {
         $520 = $521 + -24 | 0;
         HEAP32[$509 >> 2] = $520;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($520);
         $521 = HEAP32[$509 >> 2] | 0;
        } while (($521 | 0) != ($519 | 0));
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($518 + -48 | 0, 12902) | 0;
        $526 = HEAP8[$__v$i$i51$i >> 0] | 0;
        $528 = ($526 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$509 >> 2] | 0) + -24 | 0, $528 ? $__v$i$i51$i + 1 | 0 : HEAP32[$__v$i$i51$i + 8 >> 2] | 0, $528 ? ($526 & 255) >>> 1 : HEAP32[$__v$i$i51$i + 4 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($__v$i$i51$i);
        $$0$i10 = $507;
        break L199;
        break;
       }
      default:
       {
        $542 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($489, $last, $db) | 0;
        if (($542 | 0) == ($489 | 0)) {
         $574 = $db + 4 | 0;
         $575 = HEAP32[$574 >> 2] | 0;
         $576 = $575 + -24 | 0;
         $578 = $575;
         while (1) {
          $577 = $578 + -24 | 0;
          HEAP32[$574 >> 2] = $577;
          __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($577);
          $578 = HEAP32[$574 >> 2] | 0;
          if (($578 | 0) == ($576 | 0)) {
           $$0$i10 = $$first;
           break L199;
          }
         }
        }
        $544 = __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($542, $last) | 0;
        $545 = $db + 4 | 0;
        $546 = HEAP32[$545 >> 2] | 0;
        if ((($546 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
         $$0$i10 = $544;
         break L199;
        }
        __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($cv$i, $546 + -24 | 0);
        $554 = HEAP32[$545 >> 2] | 0;
        $555 = $554 + -24 | 0;
        $557 = $554;
        do {
         $556 = $557 + -24 | 0;
         HEAP32[$545 >> 2] = $556;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($556);
         $557 = HEAP32[$545 >> 2] | 0;
        } while (($557 | 0) != ($555 | 0));
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($554 + -48 | 0, 12902) | 0;
        $562 = HEAP8[$cv$i >> 0] | 0;
        $564 = ($562 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$545 >> 2] | 0) + -24 | 0, $564 ? $cv$i + 1 | 0 : HEAP32[$cv$i + 8 >> 2] | 0, $564 ? ($562 & 255) >>> 1 : HEAP32[$cv$i + 4 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($cv$i);
        $$0$i10 = $544;
        break L199;
       }
      }
     } else $$0$i10 = $$first;
    } else $$0$i10 = $$first; while (0);
    STACKTOP = sp;
    return (($$0$i10 | 0) == ($$first | 0) ? $first : $$0$i10) | 0;
   }
  default:
   {
    do if (($16 - $$first | 0) > 1) {
     if ($23 << 24 >> 24 == 83) if ((HEAP8[$$first + 1 >> 0] | 0) == 116) {
      $588 = $$first + 2 | 0;
      if (($588 | 0) == ($last | 0)) {
       $St$0$off0$i = 0;
       $t0$0$i = $last;
      } else {
       $St$0$off0$i = 0;
       $t0$0$i = (HEAP8[$588 >> 0] | 0) == 76 ? $$first + 3 | 0 : $588;
      }
     } else {
      $St$0$off0$i = 1;
      $t0$0$i = $$first;
     } else {
      $St$0$off0$i = 1;
      $t0$0$i = $$first;
     }
     $593 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($t0$0$i, $last, $db) | 0;
     $594 = ($593 | 0) == ($t0$0$i | 0);
     if ($St$0$off0$i | $594) $$0$i = $594 ? $$first : $593; else {
      $597 = HEAP32[$db + 4 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($597 | 0)) break;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($597 + -24 | 0, 0, 12922) | 0;
      $$0$i = $593;
     }
     if (($$0$i | 0) != ($$first | 0)) {
      if (($$0$i | 0) == ($last | 0)) {
       $$02 = $last;
       break L1;
      }
      if ((HEAP8[$$0$i >> 0] | 0) != 73) {
       $$02 = $$0$i;
       break L1;
      }
      $605 = $db + 4 | 0;
      $606 = HEAP32[$605 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($606 | 0)) {
       $$02 = $first;
       break L1;
      }
      $608 = $db + 16 | 0;
      HEAP32[$15 >> 2] = HEAP32[$db + 12 >> 2];
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($14, $606 + -24 | 0, $15);
      $612 = $db + 20 | 0;
      $613 = HEAP32[$612 >> 2] | 0;
      $615 = HEAP32[$db + 24 >> 2] | 0;
      if ($613 >>> 0 < $615 >>> 0) {
       HEAP32[$613 + 12 >> 2] = HEAP32[$14 + 12 >> 2];
       HEAP32[$613 >> 2] = HEAP32[$14 >> 2];
       $622 = $14 + 4 | 0;
       HEAP32[$613 + 4 >> 2] = HEAP32[$622 >> 2];
       $624 = $14 + 8 | 0;
       HEAP32[$613 + 8 >> 2] = HEAP32[$624 >> 2];
       HEAP32[$624 >> 2] = 0;
       HEAP32[$622 >> 2] = 0;
       HEAP32[$14 >> 2] = 0;
       HEAP32[$612 >> 2] = (HEAP32[$612 >> 2] | 0) + 16;
      } else {
       $632 = HEAP32[$608 >> 2] | 0;
       $633 = $613 - $632 | 0;
       $634 = $633 >> 4;
       $635 = $634 + 1 | 0;
       if (($633 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($608);
       $638 = $615 - $632 | 0;
       if ($638 >> 4 >>> 0 < 1073741823) {
        $641 = $638 >> 3;
        $$0$i$i$i = $641 >>> 0 < $635 >>> 0 ? $635 : $641;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i51$i, $$0$i$i$i, $634, $db + 28 | 0);
       $644 = $__v$i$i51$i + 8 | 0;
       $645 = HEAP32[$644 >> 2] | 0;
       HEAP32[$645 + 12 >> 2] = HEAP32[$14 + 12 >> 2];
       HEAP32[$645 >> 2] = HEAP32[$14 >> 2];
       $651 = $14 + 4 | 0;
       HEAP32[$645 + 4 >> 2] = HEAP32[$651 >> 2];
       $653 = $14 + 8 | 0;
       HEAP32[$645 + 8 >> 2] = HEAP32[$653 >> 2];
       HEAP32[$653 >> 2] = 0;
       HEAP32[$651 >> 2] = 0;
       HEAP32[$14 >> 2] = 0;
       HEAP32[$644 >> 2] = $645 + 16;
       __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($608, $__v$i$i51$i);
       __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i51$i);
      }
      __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($14);
      $657 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($$0$i, $last, $db) | 0;
      if (($657 | 0) == ($$0$i | 0)) {
       $$02 = $first;
       break L1;
      }
      $659 = HEAP32[$605 >> 2] | 0;
      if ((($659 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       $$02 = $first;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp, $659 + -24 | 0);
      $667 = HEAP32[$605 >> 2] | 0;
      $668 = $667 + -24 | 0;
      $670 = $667;
      do {
       $669 = $670 + -24 | 0;
       HEAP32[$605 >> 2] = $669;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($669);
       $670 = HEAP32[$605 >> 2] | 0;
      } while (($670 | 0) != ($668 | 0));
      $673 = HEAP8[$tmp >> 0] | 0;
      $675 = ($673 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($667 + -48 | 0, $675 ? $tmp + 1 | 0 : HEAP32[$tmp + 8 >> 2] | 0, $675 ? ($673 & 255) >>> 1 : HEAP32[$tmp + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);
      $$02 = $657;
      break L1;
     }
    } while (0);
    $685 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($$first, $last, $db) | 0;
    if (($685 | 0) == ($$first | 0) | ($685 | 0) == ($last | 0)) {
     $$02 = $first;
     break L1;
    }
    if ((HEAP8[$685 >> 0] | 0) != 73) {
     $$02 = $first;
     break L1;
    }
    $690 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($685, $last, $db) | 0;
    if (($690 | 0) == ($685 | 0)) {
     $$02 = $first;
     break L1;
    }
    $692 = $db + 4 | 0;
    $693 = HEAP32[$692 >> 2] | 0;
    if ((($693 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     $$02 = $first;
     break L1;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp3, $693 + -24 | 0);
    $701 = HEAP32[$692 >> 2] | 0;
    $702 = $701 + -24 | 0;
    $704 = $701;
    do {
     $703 = $704 + -24 | 0;
     HEAP32[$692 >> 2] = $703;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($703);
     $704 = HEAP32[$692 >> 2] | 0;
    } while (($704 | 0) != ($702 | 0));
    $707 = HEAP8[$tmp3 >> 0] | 0;
    $709 = ($707 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($701 + -48 | 0, $709 ? $tmp3 + 1 | 0 : HEAP32[$tmp3 + 8 >> 2] | 0, $709 ? ($707 & 255) >>> 1 : HEAP32[$tmp3 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp3);
    $$02 = $690;
    break L1;
   }
  }
 } else $$02 = $first; while (0);
 STACKTOP = sp;
 return $$02 | 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 = 0, $$0$i = 0, $$0$lcssa$i = 0, $$012$i = 0, $$013$i = 0, $$03$i33 = 0, $$07$i = 0.0, $$1$i = 0.0, $$114$i = 0, $$2$i = 0.0, $$20$i = 0.0, $$21$i = 0, $$210$i = 0, $$23$i = 0, $$3$i = 0.0, $$31$i = 0, $$311$i = 0, $$4$i = 0.0, $$412$lcssa$i = 0, $$41276$i = 0, $$5$lcssa$i = 0, $$51 = 0, $$587$i = 0, $$a$3$i = 0, $$a$3186$i = 0, $$fl$4 = 0, $$lcssa = 0, $$lcssa159$i = 0, $$lcssa318 = 0, $$lcssa323 = 0, $$lcssa324 = 0, $$lcssa325 = 0, $$lcssa326 = 0, $$lcssa327 = 0, $$lcssa329 = 0, $$lcssa339 = 0, $$lcssa342 = 0.0, $$lcssa344 = 0, $$p$$i = 0, $$p$5 = 0, $$p$i = 0, $$pn$i = 0, $$pr$i = 0, $$pr47$i = 0, $$pre$phi184$iZ2D = 0, $$pre182$i = 0, $$z$4$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $107 = 0, $109 = 0, $11 = 0, $12 = 0, $13 = 0, $133 = 0, $134 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $144 = 0, $146 = 0, $148 = 0, $149 = 0, $15 = 0, $154 = 0, $157 = 0, $162 = 0, $163 = 0, $168 = 0, $175 = 0, $176 = 0, $187 = 0, $19 = 0, $199 = 0, $2 = 0, $206 = 0, $208 = 0, $21 = 0, $211 = 0, $212 = 0, $217 = 0, $223 = 0, $224 = 0, $23 = 0, $230 = 0, $24 = 0, $243 = 0, $245 = 0, $248 = 0, $253 = 0, $256 = 0, $257 = 0, $267 = 0, $269 = 0, $271 = 0, $274 = 0, $276 = 0, $277 = 0, $278 = 0, $28 = 0, $284 = 0, $286 = 0, $287 = 0, $29 = 0, $291 = 0, $299 = 0, $3 = 0, $305 = 0, $314 = 0, $317 = 0, $320 = 0, $321 = 0, $334 = 0, $336 = 0, $34 = 0, $341 = 0, $346 = 0, $349 = 0, $359 = 0.0, $366 = 0, $370 = 0, $377 = 0, $379 = 0, $381 = 0, $382 = 0, $386 = 0, $39 = 0, $392 = 0.0, $393 = 0, $396 = 0, $398 = 0, $4 = 0, $40 = 0, $401 = 0, $403 = 0, $407 = 0.0, $417 = 0, $420 = 0, $423 = 0, $432 = 0, $434 = 0, $435 = 0, $44 = 0, $441 = 0, $459 = 0, $46 = 0, $464 = 0, $469 = 0, $47 = 0, $479 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $491 = 0, $492 = 0, $495 = 0, $497 = 0, $498 = 0, $499 = 0, $5 = 0, $501 = 0, $505 = 0, $507 = 0, $51 = 0, $511 = 0, $516 = 0, $517 = 0, $518 = 0, $519 = 0, $521 = 0, $527 = 0, $528 = 0, $529 = 0, $533 = 0, $541 = 0, $555 = 0, $556 = 0, $559 = 0, $56 = 0, $564 = 0, $565 = 0, $567 = 0, $574 = 0, $575 = 0, $576 = 0, $579 = 0, $580 = 0, $581 = 0, $588 = 0, $59 = 0, $598 = 0, $6 = 0, $60 = 0, $601 = 0, $603 = 0, $605 = 0, $607 = 0, $61 = 0, $612 = 0, $613 = 0, $616 = 0, $618 = 0, $620 = 0, $622 = 0, $633 = 0, $636 = 0, $641 = 0, $650 = 0, $651 = 0, $655 = 0, $658 = 0, $66 = 0, $660 = 0, $662 = 0, $666 = 0, $669 = 0, $67 = 0, $673 = 0, $683 = 0, $688 = 0, $695 = 0, $698 = 0, $7 = 0, $706 = 0, $716 = 0, $718 = 0, $726 = 0, $733 = 0, $735 = 0, $739 = 0, $741 = 0, $750 = 0, $756 = 0, $771 = 0, $773 = 0, $786 = 0, $8 = 0, $9 = 0, $91 = 0, $92 = 0, $98 = 0, $99 = 0, $a$0 = 0, $a$1 = 0, $a$1$lcssa$i = 0, $a$1147$i = 0, $a$2 = 0, $a$2$ph$i = 0, $a$3$lcssa$i = 0, $a$3134$i = 0, $a$5$lcssa$i = 0, $a$5109$i = 0, $a$6$i = 0, $a$7$i = 0, $a$8$ph$i = 0, $arg = 0, $argpos$0 = 0, $big$i = 0, $buf = 0, $buf$i = 0, $carry$0140$i = 0, $carry3$0128$i = 0, $cnt$0 = 0, $cnt$1 = 0, $cnt$1$lcssa = 0, $d$0139$i = 0, $d$0141$i = 0, $d$1127$i = 0, $d$2$lcssa$i = 0, $d$2108$i = 0, $d$3$i = 0, $d$482$i = 0, $d$575$i = 0, $d$686$i = 0, $e$0123$i = 0, $e$1$i = 0, $e$2104$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$193$i = 0, $estr$2$i = 0, $fl$0109 = 0, $fl$062 = 0, $fl$1 = 0, $fl$1$ = 0, $fl$3 = 0, $fl$4 = 0, $fl$6 = 0, $fmt39$lcssa = 0, $fmt39101 = 0, $fmt40 = 0, $fmt41 = 0, $fmt42 = 0, $fmt44 = 0, $fmt44$lcssa321 = 0, $fmt45 = 0, $i$0$lcssa = 0, $i$0$lcssa200 = 0, $i$0114 = 0, $i$0122$i = 0, $i$03$i = 0, $i$03$i25 = 0, $i$1$lcssa$i = 0, $i$1116$i = 0, $i$1125 = 0, $i$2100 = 0, $i$2100$lcssa = 0, $i$2103$i = 0, $i$398 = 0, $i$399$i = 0, $isdigittmp = 0, $isdigittmp1$i = 0, $isdigittmp1$i22 = 0, $isdigittmp11 = 0, $isdigittmp4$i = 0, $isdigittmp4$i24 = 0, $isdigittmp9 = 0, $j$0115$i = 0, $j$0117$i = 0, $j$1100$i = 0, $j$2$i = 0, $l$0 = 0, $l$0$i = 0, $l$1113 = 0, $l$2 = 0, $l10n$0 = 0, $l10n$0$lcssa = 0, $l10n$1 = 0, $l10n$2 = 0, $l10n$3 = 0, $mb = 0, $notrhs$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $p$4198 = 0, $p$5 = 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$169$i = 0, $round$068$i = 0.0, $round6$1$i = 0.0, $s$0$i = 0, $s$1$i = 0, $s$1$i$lcssa = 0, $s7$079$i = 0, $s7$1$i = 0, $s8$0$lcssa$i = 0, $s8$070$i = 0, $s9$0$i = 0, $s9$183$i = 0, $s9$2$i = 0, $small$0$i = 0.0, $small$1$i = 0.0, $st$0 = 0, $st$0$lcssa322 = 0, $storemerge = 0, $storemerge13 = 0, $storemerge8108 = 0, $storemerge860 = 0, $t$0 = 0, $t$1 = 0, $w$0 = 0, $w$1 = 0, $w$2 = 0, $wc = 0, $ws$0115 = 0, $ws$1126 = 0, $z$0$i = 0, $z$0$lcssa = 0, $z$0102 = 0, $z$1$lcssa$i = 0, $z$1146$i = 0, $z$2 = 0, $z$2$i = 0, $z$2$i$lcssa = 0, $z$3$lcssa$i = 0, $z$3133$i = 0, $z$4$i = 0, $z$6$$i = 0, $z$6$i = 0, $z$6$i$lcssa = 0, $z$6$ph$i = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 624 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $big$i = sp + 24 | 0;
 $e2$i = sp + 16 | 0;
 $buf$i = sp + 588 | 0;
 $ebuf0$i = sp + 576 | 0;
 $arg = sp;
 $buf = sp + 536 | 0;
 $wc = sp + 8 | 0;
 $mb = sp + 528 | 0;
 $0 = ($f | 0) != 0;
 $1 = $buf + 40 | 0;
 $2 = $1;
 $3 = $buf + 39 | 0;
 $4 = $wc + 4 | 0;
 $5 = $ebuf0$i + 12 | 0;
 $6 = $ebuf0$i + 11 | 0;
 $7 = $buf$i;
 $8 = $5;
 $9 = $8 - $7 | 0;
 $10 = -2 - $7 | 0;
 $11 = $8 + 2 | 0;
 $12 = $big$i + 288 | 0;
 $13 = $buf$i + 9 | 0;
 $14 = $13;
 $15 = $buf$i + 8 | 0;
 $cnt$0 = 0;
 $fmt41 = $fmt;
 $l$0 = 0;
 $l10n$0 = 0;
 L1 : while (1) {
  do if (($cnt$0 | 0) > -1) if (($l$0 | 0) > (2147483647 - $cnt$0 | 0)) {
   $19 = ___errno_location() | 0;
   HEAP32[$19 >> 2] = 75;
   $cnt$1 = -1;
   break;
  } else {
   $cnt$1 = $l$0 + $cnt$0 | 0;
   break;
  } else $cnt$1 = $cnt$0; while (0);
  $21 = HEAP8[$fmt41 >> 0] | 0;
  if (!($21 << 24 >> 24)) {
   $cnt$1$lcssa = $cnt$1;
   $l10n$0$lcssa = $l10n$0;
   label = 245;
   break;
  } else {
   $23 = $21;
   $fmt40 = $fmt41;
  }
  L9 : while (1) {
   switch ($23 << 24 >> 24) {
   case 37:
    {
     $fmt39101 = $fmt40;
     $z$0102 = $fmt40;
     label = 9;
     break L9;
     break;
    }
   case 0:
    {
     $fmt39$lcssa = $fmt40;
     $z$0$lcssa = $fmt40;
     break L9;
     break;
    }
   default:
    {}
   }
   $24 = $fmt40 + 1 | 0;
   $23 = HEAP8[$24 >> 0] | 0;
   $fmt40 = $24;
  }
  L12 : do if ((label | 0) == 9) while (1) {
   label = 0;
   if ((HEAP8[$fmt39101 + 1 >> 0] | 0) != 37) {
    $fmt39$lcssa = $fmt39101;
    $z$0$lcssa = $z$0102;
    break L12;
   }
   $28 = $z$0102 + 1 | 0;
   $29 = $fmt39101 + 2 | 0;
   if ((HEAP8[$29 >> 0] | 0) == 37) {
    $fmt39101 = $29;
    $z$0102 = $28;
    label = 9;
   } else {
    $fmt39$lcssa = $29;
    $z$0$lcssa = $28;
    break;
   }
  } while (0);
  $34 = $z$0$lcssa - $fmt41 | 0;
  if ($0) if (!(HEAP32[$f >> 2] & 32)) ___fwritex($fmt41, $34, $f) | 0;
  if (($z$0$lcssa | 0) != ($fmt41 | 0)) {
   $cnt$0 = $cnt$1;
   $fmt41 = $fmt39$lcssa;
   $l$0 = $34;
   continue;
  }
  $39 = $fmt39$lcssa + 1 | 0;
  $40 = HEAP8[$39 >> 0] | 0;
  $isdigittmp = ($40 << 24 >> 24) + -48 | 0;
  if ($isdigittmp >>> 0 < 10) {
   $44 = (HEAP8[$fmt39$lcssa + 2 >> 0] | 0) == 36;
   $$51 = $44 ? $fmt39$lcssa + 3 | 0 : $39;
   $47 = HEAP8[$$51 >> 0] | 0;
   $argpos$0 = $44 ? $isdigittmp : -1;
   $l10n$1 = $44 ? 1 : $l10n$0;
   $storemerge = $$51;
  } else {
   $47 = $40;
   $argpos$0 = -1;
   $l10n$1 = $l10n$0;
   $storemerge = $39;
  }
  $46 = $47 << 24 >> 24;
  L25 : do if (($46 & -32 | 0) == 32) {
   $51 = $46;
   $56 = $47;
   $fl$0109 = 0;
   $storemerge8108 = $storemerge;
   while (1) {
    if (!(1 << $51 + -32 & 75913)) {
     $66 = $56;
     $fl$062 = $fl$0109;
     $storemerge860 = $storemerge8108;
     break L25;
    }
    $59 = 1 << ($56 << 24 >> 24) + -32 | $fl$0109;
    $60 = $storemerge8108 + 1 | 0;
    $61 = HEAP8[$60 >> 0] | 0;
    $51 = $61 << 24 >> 24;
    if (($51 & -32 | 0) != 32) {
     $66 = $61;
     $fl$062 = $59;
     $storemerge860 = $60;
     break;
    } else {
     $56 = $61;
     $fl$0109 = $59;
     $storemerge8108 = $60;
    }
   }
  } else {
   $66 = $47;
   $fl$062 = 0;
   $storemerge860 = $storemerge;
  } while (0);
  do if ($66 << 24 >> 24 == 42) {
   $67 = $storemerge860 + 1 | 0;
   $isdigittmp11 = (HEAP8[$67 >> 0] | 0) + -48 | 0;
   if ($isdigittmp11 >>> 0 < 10) if ((HEAP8[$storemerge860 + 2 >> 0] | 0) == 36) {
    HEAP32[$nl_type + ($isdigittmp11 << 2) >> 2] = 10;
    $l10n$2 = 1;
    $storemerge13 = $storemerge860 + 3 | 0;
    $w$0 = HEAP32[$nl_arg + ((HEAP8[$67 >> 0] | 0) + -48 << 3) >> 2] | 0;
   } else label = 24; else label = 24;
   if ((label | 0) == 24) {
    label = 0;
    if ($l10n$1) {
     $$0 = -1;
     break L1;
    }
    if (!$0) {
     $fl$1 = $fl$062;
     $fmt42 = $67;
     $l10n$3 = 0;
     $w$1 = 0;
     break;
    }
    $91 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
    $92 = HEAP32[$91 >> 2] | 0;
    HEAP32[$ap >> 2] = $91 + 4;
    $l10n$2 = 0;
    $storemerge13 = $67;
    $w$0 = $92;
   }
   if (($w$0 | 0) < 0) {
    $fl$1 = $fl$062 | 8192;
    $fmt42 = $storemerge13;
    $l10n$3 = $l10n$2;
    $w$1 = 0 - $w$0 | 0;
   } else {
    $fl$1 = $fl$062;
    $fmt42 = $storemerge13;
    $l10n$3 = $l10n$2;
    $w$1 = $w$0;
   }
  } else {
   $isdigittmp1$i = ($66 << 24 >> 24) + -48 | 0;
   if ($isdigittmp1$i >>> 0 < 10) {
    $100 = $storemerge860;
    $i$03$i = 0;
    $isdigittmp4$i = $isdigittmp1$i;
    while (1) {
     $98 = ($i$03$i * 10 | 0) + $isdigittmp4$i | 0;
     $99 = $100 + 1 | 0;
     $isdigittmp4$i = (HEAP8[$99 >> 0] | 0) + -48 | 0;
     if ($isdigittmp4$i >>> 0 >= 10) {
      $$lcssa = $98;
      $$lcssa318 = $99;
      break;
     } else {
      $100 = $99;
      $i$03$i = $98;
     }
    }
    if (($$lcssa | 0) < 0) {
     $$0 = -1;
     break L1;
    } else {
     $fl$1 = $fl$062;
     $fmt42 = $$lcssa318;
     $l10n$3 = $l10n$1;
     $w$1 = $$lcssa;
    }
   } else {
    $fl$1 = $fl$062;
    $fmt42 = $storemerge860;
    $l10n$3 = $l10n$1;
    $w$1 = 0;
   }
  } while (0);
  L46 : do if ((HEAP8[$fmt42 >> 0] | 0) == 46) {
   $106 = $fmt42 + 1 | 0;
   $107 = HEAP8[$106 >> 0] | 0;
   if ($107 << 24 >> 24 != 42) {
    $isdigittmp1$i22 = ($107 << 24 >> 24) + -48 | 0;
    if ($isdigittmp1$i22 >>> 0 < 10) {
     $139 = $106;
     $i$03$i25 = 0;
     $isdigittmp4$i24 = $isdigittmp1$i22;
    } else {
     $fmt45 = $106;
     $p$0 = 0;
     break;
    }
    while (1) {
     $137 = ($i$03$i25 * 10 | 0) + $isdigittmp4$i24 | 0;
     $138 = $139 + 1 | 0;
     $isdigittmp4$i24 = (HEAP8[$138 >> 0] | 0) + -48 | 0;
     if ($isdigittmp4$i24 >>> 0 >= 10) {
      $fmt45 = $138;
      $p$0 = $137;
      break L46;
     } else {
      $139 = $138;
      $i$03$i25 = $137;
     }
    }
   }
   $109 = $fmt42 + 2 | 0;
   $isdigittmp9 = (HEAP8[$109 >> 0] | 0) + -48 | 0;
   if ($isdigittmp9 >>> 0 < 10) if ((HEAP8[$fmt42 + 3 >> 0] | 0) == 36) {
    HEAP32[$nl_type + ($isdigittmp9 << 2) >> 2] = 10;
    $fmt45 = $fmt42 + 4 | 0;
    $p$0 = HEAP32[$nl_arg + ((HEAP8[$109 >> 0] | 0) + -48 << 3) >> 2] | 0;
    break;
   }
   if ($l10n$3) {
    $$0 = -1;
    break L1;
   }
   if ($0) {
    $133 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
    $134 = HEAP32[$133 >> 2] | 0;
    HEAP32[$ap >> 2] = $133 + 4;
    $fmt45 = $109;
    $p$0 = $134;
   } else {
    $fmt45 = $109;
    $p$0 = 0;
   }
  } else {
   $fmt45 = $fmt42;
   $p$0 = -1;
  } while (0);
  $fmt44 = $fmt45;
  $st$0 = 0;
  while (1) {
   $144 = (HEAP8[$fmt44 >> 0] | 0) + -65 | 0;
   if ($144 >>> 0 > 57) {
    $$0 = -1;
    break L1;
   }
   $146 = $fmt44 + 1 | 0;
   $148 = HEAP8[17803 + ($st$0 * 58 | 0) + $144 >> 0] | 0;
   $149 = $148 & 255;
   if (($149 + -1 | 0) >>> 0 < 8) {
    $fmt44 = $146;
    $st$0 = $149;
   } else {
    $$lcssa323 = $146;
    $$lcssa324 = $148;
    $$lcssa325 = $149;
    $fmt44$lcssa321 = $fmt44;
    $st$0$lcssa322 = $st$0;
    break;
   }
  }
  if (!($$lcssa324 << 24 >> 24)) {
   $$0 = -1;
   break;
  }
  $154 = ($argpos$0 | 0) > -1;
  do if ($$lcssa324 << 24 >> 24 == 19) if ($154) {
   $$0 = -1;
   break L1;
  } else label = 52; else {
   if ($154) {
    HEAP32[$nl_type + ($argpos$0 << 2) >> 2] = $$lcssa325;
    $157 = $nl_arg + ($argpos$0 << 3) | 0;
    $162 = HEAP32[$157 + 4 >> 2] | 0;
    $163 = $arg;
    HEAP32[$163 >> 2] = HEAP32[$157 >> 2];
    HEAP32[$163 + 4 >> 2] = $162;
    label = 52;
    break;
   }
   if (!$0) {
    $$0 = 0;
    break L1;
   }
   _pop_arg($arg, $$lcssa325, $ap);
  } while (0);
  if ((label | 0) == 52) {
   label = 0;
   if (!$0) {
    $cnt$0 = $cnt$1;
    $fmt41 = $$lcssa323;
    $l$0 = $34;
    $l10n$0 = $l10n$3;
    continue;
   }
  }
  $168 = HEAP8[$fmt44$lcssa321 >> 0] | 0;
  $t$0 = ($st$0$lcssa322 | 0) != 0 & ($168 & 15 | 0) == 3 ? $168 & -33 : $168;
  $175 = $fl$1 & -65537;
  $fl$1$ = ($fl$1 & 8192 | 0) == 0 ? $fl$1 : $175;
  L75 : do switch ($t$0 | 0) {
  case 110:
   {
    switch ($st$0$lcssa322 | 0) {
    case 0:
     {
      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 1:
     {
      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 2:
     {
      $187 = HEAP32[$arg >> 2] | 0;
      HEAP32[$187 >> 2] = $cnt$1;
      HEAP32[$187 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 3:
     {
      HEAP16[HEAP32[$arg >> 2] >> 1] = $cnt$1;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 4:
     {
      HEAP8[HEAP32[$arg >> 2] >> 0] = $cnt$1;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 6:
     {
      HEAP32[HEAP32[$arg >> 2] >> 2] = $cnt$1;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    case 7:
     {
      $199 = HEAP32[$arg >> 2] | 0;
      HEAP32[$199 >> 2] = $cnt$1;
      HEAP32[$199 + 4 >> 2] = (($cnt$1 | 0) < 0) << 31 >> 31;
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
      break;
     }
    default:
     {
      $cnt$0 = $cnt$1;
      $fmt41 = $$lcssa323;
      $l$0 = $34;
      $l10n$0 = $l10n$3;
      continue L1;
     }
    }
    break;
   }
  case 112:
   {
    $fl$3 = $fl$1$ | 8;
    $p$1 = $p$0 >>> 0 > 8 ? $p$0 : 8;
    $t$1 = 120;
    label = 64;
    break;
   }
  case 88:
  case 120:
   {
    $fl$3 = $fl$1$;
    $p$1 = $p$0;
    $t$1 = $t$0;
    label = 64;
    break;
   }
  case 111:
   {
    $243 = $arg;
    $245 = HEAP32[$243 >> 2] | 0;
    $248 = HEAP32[$243 + 4 >> 2] | 0;
    if (($245 | 0) == 0 & ($248 | 0) == 0) $$0$lcssa$i = $1; else {
     $$03$i33 = $1;
     $253 = $245;
     $257 = $248;
     while (1) {
      $256 = $$03$i33 + -1 | 0;
      HEAP8[$256 >> 0] = $253 & 7 | 48;
      $253 = _bitshift64Lshr($253 | 0, $257 | 0, 3) | 0;
      $257 = tempRet0;
      if (($253 | 0) == 0 & ($257 | 0) == 0) {
       $$0$lcssa$i = $256;
       break;
      } else $$03$i33 = $256;
     }
    }
    if (!($fl$1$ & 8)) {
     $a$0 = $$0$lcssa$i;
     $fl$4 = $fl$1$;
     $p$2 = $p$0;
     $pl$1 = 0;
     $prefix$1 = 18283;
     label = 77;
    } else {
     $267 = $2 - $$0$lcssa$i + 1 | 0;
     $a$0 = $$0$lcssa$i;
     $fl$4 = $fl$1$;
     $p$2 = ($p$0 | 0) < ($267 | 0) ? $267 : $p$0;
     $pl$1 = 0;
     $prefix$1 = 18283;
     label = 77;
    }
    break;
   }
  case 105:
  case 100:
   {
    $269 = $arg;
    $271 = HEAP32[$269 >> 2] | 0;
    $274 = HEAP32[$269 + 4 >> 2] | 0;
    if (($274 | 0) < 0) {
     $276 = _i64Subtract(0, 0, $271 | 0, $274 | 0) | 0;
     $277 = tempRet0;
     $278 = $arg;
     HEAP32[$278 >> 2] = $276;
     HEAP32[$278 + 4 >> 2] = $277;
     $286 = $276;
     $287 = $277;
     $pl$0 = 1;
     $prefix$0 = 18283;
     label = 76;
     break L75;
    }
    if (!($fl$1$ & 2048)) {
     $284 = $fl$1$ & 1;
     $286 = $271;
     $287 = $274;
     $pl$0 = $284;
     $prefix$0 = ($284 | 0) == 0 ? 18283 : 18285;
     label = 76;
    } else {
     $286 = $271;
     $287 = $274;
     $pl$0 = 1;
     $prefix$0 = 18284;
     label = 76;
    }
    break;
   }
  case 117:
   {
    $176 = $arg;
    $286 = HEAP32[$176 >> 2] | 0;
    $287 = HEAP32[$176 + 4 >> 2] | 0;
    $pl$0 = 0;
    $prefix$0 = 18283;
    label = 76;
    break;
   }
  case 99:
   {
    HEAP8[$3 >> 0] = HEAP32[$arg >> 2];
    $a$2 = $3;
    $fl$6 = $175;
    $p$5 = 1;
    $pl$2 = 0;
    $prefix$2 = 18283;
    $z$2 = $1;
    break;
   }
  case 109:
   {
    $314 = ___errno_location() | 0;
    $a$1 = _strerror(HEAP32[$314 >> 2] | 0) | 0;
    label = 82;
    break;
   }
  case 115:
   {
    $317 = HEAP32[$arg >> 2] | 0;
    $a$1 = ($317 | 0) != 0 ? $317 : 18293;
    label = 82;
    break;
   }
  case 67:
   {
    HEAP32[$wc >> 2] = HEAP32[$arg >> 2];
    HEAP32[$4 >> 2] = 0;
    HEAP32[$arg >> 2] = $wc;
    $p$4198 = -1;
    label = 86;
    break;
   }
  case 83:
   {
    if (!$p$0) {
     _pad($f, 32, $w$1, 0, $fl$1$);
     $i$0$lcssa200 = 0;
     label = 98;
    } else {
     $p$4198 = $p$0;
     label = 86;
    }
    break;
   }
  case 65:
  case 71:
  case 70:
  case 69:
  case 97:
  case 103:
  case 102:
  case 101:
   {
    $359 = +HEAPF64[$arg >> 3];
    HEAP32[$e2$i >> 2] = 0;
    HEAPF64[tempDoublePtr >> 3] = $359;
    if ((HEAP32[tempDoublePtr + 4 >> 2] | 0) < 0) {
     $$07$i = -$359;
     $pl$0$i = 1;
     $prefix$0$i = 18300;
    } else if (!($fl$1$ & 2048)) {
     $366 = $fl$1$ & 1;
     $$07$i = $359;
     $pl$0$i = $366;
     $prefix$0$i = ($366 | 0) == 0 ? 18301 : 18306;
    } else {
     $$07$i = $359;
     $pl$0$i = 1;
     $prefix$0$i = 18303;
    }
    HEAPF64[tempDoublePtr >> 3] = $$07$i;
    $370 = HEAP32[tempDoublePtr + 4 >> 2] & 2146435072;
    do if ($370 >>> 0 < 2146435072 | ($370 | 0) == 2146435072 & 0 < 0) {
     $392 = +_frexpl($$07$i, $e2$i) * 2.0;
     $393 = $392 != 0.0;
     if ($393) HEAP32[$e2$i >> 2] = (HEAP32[$e2$i >> 2] | 0) + -1;
     $396 = $t$0 | 32;
     if (($396 | 0) == 97) {
      $398 = $t$0 & 32;
      $prefix$0$$i = ($398 | 0) == 0 ? $prefix$0$i : $prefix$0$i + 9 | 0;
      $401 = $pl$0$i | 2;
      $403 = 12 - $p$0 | 0;
      do if ($p$0 >>> 0 > 11 | ($403 | 0) == 0) $$1$i = $392; else {
       $re$169$i = $403;
       $round$068$i = 8.0;
       while (1) {
        $re$169$i = $re$169$i + -1 | 0;
        $407 = $round$068$i * 16.0;
        if (!$re$169$i) {
         $$lcssa342 = $407;
         break;
        } else $round$068$i = $407;
       }
       if ((HEAP8[$prefix$0$$i >> 0] | 0) == 45) {
        $$1$i = -($$lcssa342 + (-$392 - $$lcssa342));
        break;
       } else {
        $$1$i = $392 + $$lcssa342 - $$lcssa342;
        break;
       }
      } while (0);
      $417 = HEAP32[$e2$i >> 2] | 0;
      $420 = ($417 | 0) < 0 ? 0 - $417 | 0 : $417;
      $423 = _fmt_u($420, (($420 | 0) < 0) << 31 >> 31, $5) | 0;
      if (($423 | 0) == ($5 | 0)) {
       HEAP8[$6 >> 0] = 48;
       $estr$0$i = $6;
      } else $estr$0$i = $423;
      HEAP8[$estr$0$i + -1 >> 0] = ($417 >> 31 & 2) + 43;
      $432 = $estr$0$i + -2 | 0;
      HEAP8[$432 >> 0] = $t$0 + 15;
      $notrhs$i = ($p$0 | 0) < 1;
      $434 = ($fl$1$ & 8 | 0) == 0;
      $$2$i = $$1$i;
      $s$0$i = $buf$i;
      while (1) {
       $435 = ~~$$2$i;
       $441 = $s$0$i + 1 | 0;
       HEAP8[$s$0$i >> 0] = HEAPU8[18267 + $435 >> 0] | $398;
       $$2$i = ($$2$i - +($435 | 0)) * 16.0;
       do if (($441 - $7 | 0) == 1) {
        if ($434 & ($notrhs$i & $$2$i == 0.0)) {
         $s$1$i = $441;
         break;
        }
        HEAP8[$441 >> 0] = 46;
        $s$1$i = $s$0$i + 2 | 0;
       } else $s$1$i = $441; while (0);
       if (!($$2$i != 0.0)) {
        $s$1$i$lcssa = $s$1$i;
        break;
       } else $s$0$i = $s$1$i;
      }
      $$pre182$i = $s$1$i$lcssa;
      $l$0$i = ($p$0 | 0) != 0 & ($10 + $$pre182$i | 0) < ($p$0 | 0) ? $11 + $p$0 - $432 | 0 : $9 - $432 + $$pre182$i | 0;
      $459 = $l$0$i + $401 | 0;
      _pad($f, 32, $w$1, $459, $fl$1$);
      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$$i, $401, $f) | 0;
      _pad($f, 48, $w$1, $459, $fl$1$ ^ 65536);
      $464 = $$pre182$i - $7 | 0;
      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($buf$i, $464, $f) | 0;
      $469 = $8 - $432 | 0;
      _pad($f, 48, $l$0$i - ($464 + $469) | 0, 0, 0);
      if (!(HEAP32[$f >> 2] & 32)) ___fwritex($432, $469, $f) | 0;
      _pad($f, 32, $w$1, $459, $fl$1$ ^ 8192);
      $$0$i = ($459 | 0) < ($w$1 | 0) ? $w$1 : $459;
      break;
     }
     $$p$i = ($p$0 | 0) < 0 ? 6 : $p$0;
     if ($393) {
      $479 = (HEAP32[$e2$i >> 2] | 0) + -28 | 0;
      HEAP32[$e2$i >> 2] = $479;
      $$3$i = $392 * 268435456.0;
      $481 = $479;
     } else {
      $$3$i = $392;
      $481 = HEAP32[$e2$i >> 2] | 0;
     }
     $$31$i = ($481 | 0) < 0 ? $big$i : $12;
     $482 = $$31$i;
     $$4$i = $$3$i;
     $z$0$i = $$31$i;
     while (1) {
      $483 = ~~$$4$i >>> 0;
      HEAP32[$z$0$i >> 2] = $483;
      $484 = $z$0$i + 4 | 0;
      $$4$i = ($$4$i - +($483 >>> 0)) * 1.0e9;
      if (!($$4$i != 0.0)) {
       $$lcssa326 = $484;
       break;
      } else $z$0$i = $484;
     }
     $$pr$i = HEAP32[$e2$i >> 2] | 0;
     if (($$pr$i | 0) > 0) {
      $491 = $$pr$i;
      $a$1147$i = $$31$i;
      $z$1146$i = $$lcssa326;
      while (1) {
       $492 = ($491 | 0) > 29 ? 29 : $491;
       $d$0139$i = $z$1146$i + -4 | 0;
       do if ($d$0139$i >>> 0 < $a$1147$i >>> 0) $a$2$ph$i = $a$1147$i; else {
        $carry$0140$i = 0;
        $d$0141$i = $d$0139$i;
        while (1) {
         $495 = _bitshift64Shl(HEAP32[$d$0141$i >> 2] | 0, 0, $492 | 0) | 0;
         $497 = _i64Add($495 | 0, tempRet0 | 0, $carry$0140$i | 0, 0) | 0;
         $498 = tempRet0;
         $499 = ___uremdi3($497 | 0, $498 | 0, 1e9, 0) | 0;
         HEAP32[$d$0141$i >> 2] = $499;
         $501 = ___udivdi3($497 | 0, $498 | 0, 1e9, 0) | 0;
         $d$0141$i = $d$0141$i + -4 | 0;
         if ($d$0141$i >>> 0 < $a$1147$i >>> 0) {
          $$lcssa327 = $501;
          break;
         } else $carry$0140$i = $501;
        }
        if (!$$lcssa327) {
         $a$2$ph$i = $a$1147$i;
         break;
        }
        $505 = $a$1147$i + -4 | 0;
        HEAP32[$505 >> 2] = $$lcssa327;
        $a$2$ph$i = $505;
       } while (0);
       $z$2$i = $z$1146$i;
       while (1) {
        if ($z$2$i >>> 0 <= $a$2$ph$i >>> 0) {
         $z$2$i$lcssa = $z$2$i;
         break;
        }
        $507 = $z$2$i + -4 | 0;
        if (!(HEAP32[$507 >> 2] | 0)) $z$2$i = $507; else {
         $z$2$i$lcssa = $z$2$i;
         break;
        }
       }
       $511 = (HEAP32[$e2$i >> 2] | 0) - $492 | 0;
       HEAP32[$e2$i >> 2] = $511;
       if (($511 | 0) > 0) {
        $491 = $511;
        $a$1147$i = $a$2$ph$i;
        $z$1146$i = $z$2$i$lcssa;
       } else {
        $$pr47$i = $511;
        $a$1$lcssa$i = $a$2$ph$i;
        $z$1$lcssa$i = $z$2$i$lcssa;
        break;
       }
      }
     } else {
      $$pr47$i = $$pr$i;
      $a$1$lcssa$i = $$31$i;
      $z$1$lcssa$i = $$lcssa326;
     }
     if (($$pr47$i | 0) < 0) {
      $516 = (($$p$i + 25 | 0) / 9 | 0) + 1 | 0;
      $517 = ($396 | 0) == 102;
      $519 = $$pr47$i;
      $a$3134$i = $a$1$lcssa$i;
      $z$3133$i = $z$1$lcssa$i;
      while (1) {
       $518 = 0 - $519 | 0;
       $521 = ($518 | 0) > 9 ? 9 : $518;
       do if ($a$3134$i >>> 0 < $z$3133$i >>> 0) {
        $527 = (1 << $521) + -1 | 0;
        $528 = 1e9 >>> $521;
        $carry3$0128$i = 0;
        $d$1127$i = $a$3134$i;
        while (1) {
         $529 = HEAP32[$d$1127$i >> 2] | 0;
         HEAP32[$d$1127$i >> 2] = ($529 >>> $521) + $carry3$0128$i;
         $533 = Math_imul($529 & $527, $528) | 0;
         $d$1127$i = $d$1127$i + 4 | 0;
         if ($d$1127$i >>> 0 >= $z$3133$i >>> 0) {
          $$lcssa329 = $533;
          break;
         } else $carry3$0128$i = $533;
        }
        $$a$3$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i;
        if (!$$lcssa329) {
         $$a$3186$i = $$a$3$i;
         $z$4$i = $z$3133$i;
         break;
        }
        HEAP32[$z$3133$i >> 2] = $$lcssa329;
        $$a$3186$i = $$a$3$i;
        $z$4$i = $z$3133$i + 4 | 0;
       } else {
        $$a$3186$i = (HEAP32[$a$3134$i >> 2] | 0) == 0 ? $a$3134$i + 4 | 0 : $a$3134$i;
        $z$4$i = $z$3133$i;
       } while (0);
       $541 = $517 ? $$31$i : $$a$3186$i;
       $$z$4$i = ($z$4$i - $541 >> 2 | 0) > ($516 | 0) ? $541 + ($516 << 2) | 0 : $z$4$i;
       $519 = (HEAP32[$e2$i >> 2] | 0) + $521 | 0;
       HEAP32[$e2$i >> 2] = $519;
       if (($519 | 0) >= 0) {
        $a$3$lcssa$i = $$a$3186$i;
        $z$3$lcssa$i = $$z$4$i;
        break;
       } else {
        $a$3134$i = $$a$3186$i;
        $z$3133$i = $$z$4$i;
       }
      }
     } else {
      $a$3$lcssa$i = $a$1$lcssa$i;
      $z$3$lcssa$i = $z$1$lcssa$i;
     }
     do if ($a$3$lcssa$i >>> 0 < $z$3$lcssa$i >>> 0) {
      $555 = ($482 - $a$3$lcssa$i >> 2) * 9 | 0;
      $556 = HEAP32[$a$3$lcssa$i >> 2] | 0;
      if ($556 >>> 0 < 10) {
       $e$1$i = $555;
       break;
      } else {
       $e$0123$i = $555;
       $i$0122$i = 10;
      }
      while (1) {
       $i$0122$i = $i$0122$i * 10 | 0;
       $559 = $e$0123$i + 1 | 0;
       if ($556 >>> 0 < $i$0122$i >>> 0) {
        $e$1$i = $559;
        break;
       } else $e$0123$i = $559;
      }
     } else $e$1$i = 0; while (0);
     $564 = ($396 | 0) == 103;
     $565 = ($$p$i | 0) != 0;
     $567 = $$p$i - (($396 | 0) != 102 ? $e$1$i : 0) + (($565 & $564) << 31 >> 31) | 0;
     if (($567 | 0) < ((($z$3$lcssa$i - $482 >> 2) * 9 | 0) + -9 | 0)) {
      $574 = $567 + 9216 | 0;
      $575 = ($574 | 0) / 9 | 0;
      $576 = $$31$i + ($575 + -1023 << 2) | 0;
      $j$0115$i = (($574 | 0) % 9 | 0) + 1 | 0;
      if (($j$0115$i | 0) < 9) {
       $i$1116$i = 10;
       $j$0117$i = $j$0115$i;
       while (1) {
        $579 = $i$1116$i * 10 | 0;
        $j$0117$i = $j$0117$i + 1 | 0;
        if (($j$0117$i | 0) == 9) {
         $i$1$lcssa$i = $579;
         break;
        } else $i$1116$i = $579;
       }
      } else $i$1$lcssa$i = 10;
      $580 = HEAP32[$576 >> 2] | 0;
      $581 = ($580 >>> 0) % ($i$1$lcssa$i >>> 0) | 0;
      if (!$581) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) {
       $a$7$i = $a$3$lcssa$i;
       $d$3$i = $576;
       $e$3$i = $e$1$i;
      } else label = 163; else label = 163;
      do if ((label | 0) == 163) {
       label = 0;
       $$20$i = ((($580 >>> 0) / ($i$1$lcssa$i >>> 0) | 0) & 1 | 0) == 0 ? 9007199254740992.0 : 9007199254740994.0;
       $588 = ($i$1$lcssa$i | 0) / 2 | 0;
       do if ($581 >>> 0 < $588 >>> 0) $small$0$i = .5; else {
        if (($581 | 0) == ($588 | 0)) if (($$31$i + ($575 + -1022 << 2) | 0) == ($z$3$lcssa$i | 0)) {
         $small$0$i = 1.0;
         break;
        }
        $small$0$i = 1.5;
       } while (0);
       do if (!$pl$0$i) {
        $round6$1$i = $$20$i;
        $small$1$i = $small$0$i;
       } else {
        if ((HEAP8[$prefix$0$i >> 0] | 0) != 45) {
         $round6$1$i = $$20$i;
         $small$1$i = $small$0$i;
         break;
        }
        $round6$1$i = -$$20$i;
        $small$1$i = -$small$0$i;
       } while (0);
       $598 = $580 - $581 | 0;
       HEAP32[$576 >> 2] = $598;
       if (!($round6$1$i + $small$1$i != $round6$1$i)) {
        $a$7$i = $a$3$lcssa$i;
        $d$3$i = $576;
        $e$3$i = $e$1$i;
        break;
       }
       $601 = $598 + $i$1$lcssa$i | 0;
       HEAP32[$576 >> 2] = $601;
       if ($601 >>> 0 > 999999999) {
        $a$5109$i = $a$3$lcssa$i;
        $d$2108$i = $576;
        while (1) {
         $603 = $d$2108$i + -4 | 0;
         HEAP32[$d$2108$i >> 2] = 0;
         if ($603 >>> 0 < $a$5109$i >>> 0) {
          $605 = $a$5109$i + -4 | 0;
          HEAP32[$605 >> 2] = 0;
          $a$6$i = $605;
         } else $a$6$i = $a$5109$i;
         $607 = (HEAP32[$603 >> 2] | 0) + 1 | 0;
         HEAP32[$603 >> 2] = $607;
         if ($607 >>> 0 > 999999999) {
          $a$5109$i = $a$6$i;
          $d$2108$i = $603;
         } else {
          $a$5$lcssa$i = $a$6$i;
          $d$2$lcssa$i = $603;
          break;
         }
        }
       } else {
        $a$5$lcssa$i = $a$3$lcssa$i;
        $d$2$lcssa$i = $576;
       }
       $612 = ($482 - $a$5$lcssa$i >> 2) * 9 | 0;
       $613 = HEAP32[$a$5$lcssa$i >> 2] | 0;
       if ($613 >>> 0 < 10) {
        $a$7$i = $a$5$lcssa$i;
        $d$3$i = $d$2$lcssa$i;
        $e$3$i = $612;
        break;
       } else {
        $e$2104$i = $612;
        $i$2103$i = 10;
       }
       while (1) {
        $i$2103$i = $i$2103$i * 10 | 0;
        $616 = $e$2104$i + 1 | 0;
        if ($613 >>> 0 < $i$2103$i >>> 0) {
         $a$7$i = $a$5$lcssa$i;
         $d$3$i = $d$2$lcssa$i;
         $e$3$i = $616;
         break;
        } else $e$2104$i = $616;
       }
      } while (0);
      $618 = $d$3$i + 4 | 0;
      $a$8$ph$i = $a$7$i;
      $e$4$ph$i = $e$3$i;
      $z$6$ph$i = $z$3$lcssa$i >>> 0 > $618 >>> 0 ? $618 : $z$3$lcssa$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;
     }
     $620 = 0 - $e$4$ph$i | 0;
     $z$6$i = $z$6$ph$i;
     while (1) {
      if ($z$6$i >>> 0 <= $a$8$ph$i >>> 0) {
       $$lcssa159$i = 0;
       $z$6$i$lcssa = $z$6$i;
       break;
      }
      $622 = $z$6$i + -4 | 0;
      if (!(HEAP32[$622 >> 2] | 0)) $z$6$i = $622; else {
       $$lcssa159$i = 1;
       $z$6$i$lcssa = $z$6$i;
       break;
      }
     }
     do if ($564) {
      $$p$$i = ($565 & 1 ^ 1) + $$p$i | 0;
      if (($$p$$i | 0) > ($e$4$ph$i | 0) & ($e$4$ph$i | 0) > -5) {
       $$013$i = $t$0 + -1 | 0;
       $$210$i = $$p$$i + -1 - $e$4$ph$i | 0;
      } else {
       $$013$i = $t$0 + -2 | 0;
       $$210$i = $$p$$i + -1 | 0;
      }
      $633 = $fl$1$ & 8;
      if ($633) {
       $$114$i = $$013$i;
       $$311$i = $$210$i;
       $$pre$phi184$iZ2D = $633;
       break;
      }
      do if ($$lcssa159$i) {
       $636 = HEAP32[$z$6$i$lcssa + -4 >> 2] | 0;
       if (!$636) {
        $j$2$i = 9;
        break;
       }
       if (!(($636 >>> 0) % 10 | 0)) {
        $i$399$i = 10;
        $j$1100$i = 0;
       } else {
        $j$2$i = 0;
        break;
       }
       while (1) {
        $i$399$i = $i$399$i * 10 | 0;
        $641 = $j$1100$i + 1 | 0;
        if (($636 >>> 0) % ($i$399$i >>> 0) | 0) {
         $j$2$i = $641;
         break;
        } else $j$1100$i = $641;
       }
      } else $j$2$i = 9; while (0);
      $650 = (($z$6$i$lcssa - $482 >> 2) * 9 | 0) + -9 | 0;
      if (($$013$i | 32 | 0) == 102) {
       $651 = $650 - $j$2$i | 0;
       $$21$i = ($651 | 0) < 0 ? 0 : $651;
       $$114$i = $$013$i;
       $$311$i = ($$210$i | 0) < ($$21$i | 0) ? $$210$i : $$21$i;
       $$pre$phi184$iZ2D = 0;
       break;
      } else {
       $655 = $650 + $e$4$ph$i - $j$2$i | 0;
       $$23$i = ($655 | 0) < 0 ? 0 : $655;
       $$114$i = $$013$i;
       $$311$i = ($$210$i | 0) < ($$23$i | 0) ? $$210$i : $$23$i;
       $$pre$phi184$iZ2D = 0;
       break;
      }
     } else {
      $$114$i = $t$0;
      $$311$i = $$p$i;
      $$pre$phi184$iZ2D = $fl$1$ & 8;
     } while (0);
     $658 = $$311$i | $$pre$phi184$iZ2D;
     $660 = ($658 | 0) != 0 & 1;
     $662 = ($$114$i | 32 | 0) == 102;
     if ($662) {
      $$pn$i = ($e$4$ph$i | 0) > 0 ? $e$4$ph$i : 0;
      $estr$2$i = 0;
     } else {
      $666 = ($e$4$ph$i | 0) < 0 ? $620 : $e$4$ph$i;
      $669 = _fmt_u($666, (($666 | 0) < 0) << 31 >> 31, $5) | 0;
      if (($8 - $669 | 0) < 2) {
       $estr$193$i = $669;
       while (1) {
        $673 = $estr$193$i + -1 | 0;
        HEAP8[$673 >> 0] = 48;
        if (($8 - $673 | 0) < 2) $estr$193$i = $673; else {
         $estr$1$lcssa$i = $673;
         break;
        }
       }
      } else $estr$1$lcssa$i = $669;
      HEAP8[$estr$1$lcssa$i + -1 >> 0] = ($e$4$ph$i >> 31 & 2) + 43;
      $683 = $estr$1$lcssa$i + -2 | 0;
      HEAP8[$683 >> 0] = $$114$i;
      $$pn$i = $8 - $683 | 0;
      $estr$2$i = $683;
     }
     $688 = $pl$0$i + 1 + $$311$i + $660 + $$pn$i | 0;
     _pad($f, 32, $w$1, $688, $fl$1$);
     if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$0$i, $pl$0$i, $f) | 0;
     _pad($f, 48, $w$1, $688, $fl$1$ ^ 65536);
     do if ($662) {
      $r$0$a$8$i = $a$8$ph$i >>> 0 > $$31$i >>> 0 ? $$31$i : $a$8$ph$i;
      $d$482$i = $r$0$a$8$i;
      while (1) {
       $695 = _fmt_u(HEAP32[$d$482$i >> 2] | 0, 0, $13) | 0;
       do if (($d$482$i | 0) == ($r$0$a$8$i | 0)) {
        if (($695 | 0) != ($13 | 0)) {
         $s7$1$i = $695;
         break;
        }
        HEAP8[$15 >> 0] = 48;
        $s7$1$i = $15;
       } else {
        if ($695 >>> 0 > $buf$i >>> 0) $s7$079$i = $695; else {
         $s7$1$i = $695;
         break;
        }
        while (1) {
         $698 = $s7$079$i + -1 | 0;
         HEAP8[$698 >> 0] = 48;
         if ($698 >>> 0 > $buf$i >>> 0) $s7$079$i = $698; else {
          $s7$1$i = $698;
          break;
         }
        }
       } while (0);
       if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s7$1$i, $14 - $s7$1$i | 0, $f) | 0;
       $706 = $d$482$i + 4 | 0;
       if ($706 >>> 0 > $$31$i >>> 0) {
        $$lcssa339 = $706;
        break;
       } else $d$482$i = $706;
      }
      do if ($658) {
       if (HEAP32[$f >> 2] & 32) break;
       ___fwritex(18335, 1, $f) | 0;
      } while (0);
      if (($$311$i | 0) > 0 & $$lcssa339 >>> 0 < $z$6$i$lcssa >>> 0) {
       $$41276$i = $$311$i;
       $d$575$i = $$lcssa339;
       while (1) {
        $716 = _fmt_u(HEAP32[$d$575$i >> 2] | 0, 0, $13) | 0;
        if ($716 >>> 0 > $buf$i >>> 0) {
         $s8$070$i = $716;
         while (1) {
          $718 = $s8$070$i + -1 | 0;
          HEAP8[$718 >> 0] = 48;
          if ($718 >>> 0 > $buf$i >>> 0) $s8$070$i = $718; else {
           $s8$0$lcssa$i = $718;
           break;
          }
         }
        } else $s8$0$lcssa$i = $716;
        if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s8$0$lcssa$i, ($$41276$i | 0) > 9 ? 9 : $$41276$i, $f) | 0;
        $d$575$i = $d$575$i + 4 | 0;
        $726 = $$41276$i + -9 | 0;
        if (!(($$41276$i | 0) > 9 & $d$575$i >>> 0 < $z$6$i$lcssa >>> 0)) {
         $$412$lcssa$i = $726;
         break;
        } else $$41276$i = $726;
       }
      } else $$412$lcssa$i = $$311$i;
      _pad($f, 48, $$412$lcssa$i + 9 | 0, 9, 0);
     } else {
      $z$6$$i = $$lcssa159$i ? $z$6$i$lcssa : $a$8$ph$i + 4 | 0;
      if (($$311$i | 0) > -1) {
       $733 = ($$pre$phi184$iZ2D | 0) == 0;
       $$587$i = $$311$i;
       $d$686$i = $a$8$ph$i;
       while (1) {
        $735 = _fmt_u(HEAP32[$d$686$i >> 2] | 0, 0, $13) | 0;
        if (($735 | 0) == ($13 | 0)) {
         HEAP8[$15 >> 0] = 48;
         $s9$0$i = $15;
        } else $s9$0$i = $735;
        do if (($d$686$i | 0) == ($a$8$ph$i | 0)) {
         $741 = $s9$0$i + 1 | 0;
         if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$0$i, 1, $f) | 0;
         if ($733 & ($$587$i | 0) < 1) {
          $s9$2$i = $741;
          break;
         }
         if (HEAP32[$f >> 2] & 32) {
          $s9$2$i = $741;
          break;
         }
         ___fwritex(18335, 1, $f) | 0;
         $s9$2$i = $741;
        } else {
         if ($s9$0$i >>> 0 > $buf$i >>> 0) $s9$183$i = $s9$0$i; else {
          $s9$2$i = $s9$0$i;
          break;
         }
         while (1) {
          $739 = $s9$183$i + -1 | 0;
          HEAP8[$739 >> 0] = 48;
          if ($739 >>> 0 > $buf$i >>> 0) $s9$183$i = $739; else {
           $s9$2$i = $739;
           break;
          }
         }
        } while (0);
        $750 = $14 - $s9$2$i | 0;
        if (!(HEAP32[$f >> 2] & 32)) ___fwritex($s9$2$i, ($$587$i | 0) > ($750 | 0) ? $750 : $$587$i, $f) | 0;
        $756 = $$587$i - $750 | 0;
        $d$686$i = $d$686$i + 4 | 0;
        if (!($d$686$i >>> 0 < $z$6$$i >>> 0 & ($756 | 0) > -1)) {
         $$5$lcssa$i = $756;
         break;
        } else $$587$i = $756;
       }
      } else $$5$lcssa$i = $$311$i;
      _pad($f, 48, $$5$lcssa$i + 18 | 0, 18, 0);
      if (HEAP32[$f >> 2] & 32) break;
      ___fwritex($estr$2$i, $8 - $estr$2$i | 0, $f) | 0;
     } while (0);
     _pad($f, 32, $w$1, $688, $fl$1$ ^ 8192);
     $$0$i = ($688 | 0) < ($w$1 | 0) ? $w$1 : $688;
    } else {
     $377 = ($t$0 & 32 | 0) != 0;
     $379 = $$07$i != $$07$i | 0.0 != 0.0;
     $pl$1$i = $379 ? 0 : $pl$0$i;
     $381 = $pl$1$i + 3 | 0;
     _pad($f, 32, $w$1, $381, $175);
     $382 = HEAP32[$f >> 2] | 0;
     if (!($382 & 32)) {
      ___fwritex($prefix$0$i, $pl$1$i, $f) | 0;
      $386 = HEAP32[$f >> 2] | 0;
     } else $386 = $382;
     if (!($386 & 32)) ___fwritex($379 ? ($377 ? 18327 : 18331) : $377 ? 18319 : 18323, 3, $f) | 0;
     _pad($f, 32, $w$1, $381, $fl$1$ ^ 8192);
     $$0$i = ($381 | 0) < ($w$1 | 0) ? $w$1 : $381;
    } while (0);
    $cnt$0 = $cnt$1;
    $fmt41 = $$lcssa323;
    $l$0 = $$0$i;
    $l10n$0 = $l10n$3;
    continue L1;
    break;
   }
  default:
   {
    $a$2 = $fmt41;
    $fl$6 = $fl$1$;
    $p$5 = $p$0;
    $pl$2 = 0;
    $prefix$2 = 18283;
    $z$2 = $1;
   }
  } while (0);
  L313 : do if ((label | 0) == 64) {
   label = 0;
   $206 = $arg;
   $208 = HEAP32[$206 >> 2] | 0;
   $211 = HEAP32[$206 + 4 >> 2] | 0;
   $212 = $t$1 & 32;
   if (($208 | 0) == 0 & ($211 | 0) == 0) {
    $a$0 = $1;
    $fl$4 = $fl$3;
    $p$2 = $p$1;
    $pl$1 = 0;
    $prefix$1 = 18283;
    label = 77;
   } else {
    $$012$i = $1;
    $217 = $208;
    $224 = $211;
    while (1) {
     $223 = $$012$i + -1 | 0;
     HEAP8[$223 >> 0] = HEAPU8[18267 + ($217 & 15) >> 0] | $212;
     $217 = _bitshift64Lshr($217 | 0, $224 | 0, 4) | 0;
     $224 = tempRet0;
     if (($217 | 0) == 0 & ($224 | 0) == 0) {
      $$lcssa344 = $223;
      break;
     } else $$012$i = $223;
    }
    $230 = $arg;
    if (($fl$3 & 8 | 0) == 0 | (HEAP32[$230 >> 2] | 0) == 0 & (HEAP32[$230 + 4 >> 2] | 0) == 0) {
     $a$0 = $$lcssa344;
     $fl$4 = $fl$3;
     $p$2 = $p$1;
     $pl$1 = 0;
     $prefix$1 = 18283;
     label = 77;
    } else {
     $a$0 = $$lcssa344;
     $fl$4 = $fl$3;
     $p$2 = $p$1;
     $pl$1 = 2;
     $prefix$1 = 18283 + ($t$1 >> 4) | 0;
     label = 77;
    }
   }
  } else if ((label | 0) == 76) {
   label = 0;
   $a$0 = _fmt_u($286, $287, $1) | 0;
   $fl$4 = $fl$1$;
   $p$2 = $p$0;
   $pl$1 = $pl$0;
   $prefix$1 = $prefix$0;
   label = 77;
  } else if ((label | 0) == 82) {
   label = 0;
   $320 = _memchr($a$1, 0, $p$0) | 0;
   $321 = ($320 | 0) == 0;
   $a$2 = $a$1;
   $fl$6 = $175;
   $p$5 = $321 ? $p$0 : $320 - $a$1 | 0;
   $pl$2 = 0;
   $prefix$2 = 18283;
   $z$2 = $321 ? $a$1 + $p$0 | 0 : $320;
  } else if ((label | 0) == 86) {
   label = 0;
   $i$0114 = 0;
   $l$1113 = 0;
   $ws$0115 = HEAP32[$arg >> 2] | 0;
   while (1) {
    $334 = HEAP32[$ws$0115 >> 2] | 0;
    if (!$334) {
     $i$0$lcssa = $i$0114;
     $l$2 = $l$1113;
     break;
    }
    $336 = _wctomb($mb, $334) | 0;
    if (($336 | 0) < 0 | $336 >>> 0 > ($p$4198 - $i$0114 | 0) >>> 0) {
     $i$0$lcssa = $i$0114;
     $l$2 = $336;
     break;
    }
    $341 = $336 + $i$0114 | 0;
    if ($p$4198 >>> 0 > $341 >>> 0) {
     $i$0114 = $341;
     $l$1113 = $336;
     $ws$0115 = $ws$0115 + 4 | 0;
    } else {
     $i$0$lcssa = $341;
     $l$2 = $336;
     break;
    }
   }
   if (($l$2 | 0) < 0) {
    $$0 = -1;
    break L1;
   }
   _pad($f, 32, $w$1, $i$0$lcssa, $fl$1$);
   if (!$i$0$lcssa) {
    $i$0$lcssa200 = 0;
    label = 98;
   } else {
    $i$1125 = 0;
    $ws$1126 = HEAP32[$arg >> 2] | 0;
    while (1) {
     $346 = HEAP32[$ws$1126 >> 2] | 0;
     if (!$346) {
      $i$0$lcssa200 = $i$0$lcssa;
      label = 98;
      break L313;
     }
     $349 = _wctomb($mb, $346) | 0;
     $i$1125 = $349 + $i$1125 | 0;
     if (($i$1125 | 0) > ($i$0$lcssa | 0)) {
      $i$0$lcssa200 = $i$0$lcssa;
      label = 98;
      break L313;
     }
     if (!(HEAP32[$f >> 2] & 32)) ___fwritex($mb, $349, $f) | 0;
     if ($i$1125 >>> 0 >= $i$0$lcssa >>> 0) {
      $i$0$lcssa200 = $i$0$lcssa;
      label = 98;
      break;
     } else $ws$1126 = $ws$1126 + 4 | 0;
    }
   }
  } while (0);
  if ((label | 0) == 98) {
   label = 0;
   _pad($f, 32, $w$1, $i$0$lcssa200, $fl$1$ ^ 8192);
   $cnt$0 = $cnt$1;
   $fmt41 = $$lcssa323;
   $l$0 = ($w$1 | 0) > ($i$0$lcssa200 | 0) ? $w$1 : $i$0$lcssa200;
   $l10n$0 = $l10n$3;
   continue;
  }
  if ((label | 0) == 77) {
   label = 0;
   $$fl$4 = ($p$2 | 0) > -1 ? $fl$4 & -65537 : $fl$4;
   $291 = $arg;
   $299 = (HEAP32[$291 >> 2] | 0) != 0 | (HEAP32[$291 + 4 >> 2] | 0) != 0;
   if (($p$2 | 0) != 0 | $299) {
    $305 = ($299 & 1 ^ 1) + ($2 - $a$0) | 0;
    $a$2 = $a$0;
    $fl$6 = $$fl$4;
    $p$5 = ($p$2 | 0) > ($305 | 0) ? $p$2 : $305;
    $pl$2 = $pl$1;
    $prefix$2 = $prefix$1;
    $z$2 = $1;
   } else {
    $a$2 = $1;
    $fl$6 = $$fl$4;
    $p$5 = 0;
    $pl$2 = $pl$1;
    $prefix$2 = $prefix$1;
    $z$2 = $1;
   }
  }
  $771 = $z$2 - $a$2 | 0;
  $$p$5 = ($p$5 | 0) < ($771 | 0) ? $771 : $p$5;
  $773 = $pl$2 + $$p$5 | 0;
  $w$2 = ($w$1 | 0) < ($773 | 0) ? $773 : $w$1;
  _pad($f, 32, $w$2, $773, $fl$6);
  if (!(HEAP32[$f >> 2] & 32)) ___fwritex($prefix$2, $pl$2, $f) | 0;
  _pad($f, 48, $w$2, $773, $fl$6 ^ 65536);
  _pad($f, 48, $$p$5, $771, 0);
  if (!(HEAP32[$f >> 2] & 32)) ___fwritex($a$2, $771, $f) | 0;
  _pad($f, 32, $w$2, $773, $fl$6 ^ 8192);
  $cnt$0 = $cnt$1;
  $fmt41 = $$lcssa323;
  $l$0 = $w$2;
  $l10n$0 = $l10n$3;
 }
 L348 : do if ((label | 0) == 245) if (!$f) if (!$l10n$0$lcssa) $$0 = 0; else {
  $i$2100 = 1;
  while (1) {
   $786 = HEAP32[$nl_type + ($i$2100 << 2) >> 2] | 0;
   if (!$786) {
    $i$2100$lcssa = $i$2100;
    break;
   }
   _pop_arg($nl_arg + ($i$2100 << 3) | 0, $786, $ap);
   $i$2100 = $i$2100 + 1 | 0;
   if (($i$2100 | 0) >= 10) {
    $$0 = 1;
    break L348;
   }
  }
  if (($i$2100$lcssa | 0) < 10) {
   $i$398 = $i$2100$lcssa;
   while (1) {
    if (HEAP32[$nl_type + ($i$398 << 2) >> 2] | 0) {
     $$0 = -1;
     break L348;
    }
    $i$398 = $i$398 + 1 | 0;
    if (($i$398 | 0) >= 10) {
     $$0 = 1;
     break;
    }
   }
  } else $$0 = 1;
 } else $$0 = $cnt$1$lcssa; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}
function __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i = 0, $$0$i$i$i = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i46 = 0, $$0$i$i$i$i62 = 0, $$0$i$i$i26 = 0, $$0$i$i117 = 0, $$0$i49 = 0, $$01$i$i$i122 = 0, $$01$i$i$i41126 = 0, $$01$i$i$i57130 = 0, $$1$i = 0, $$lcssa = 0, $$lcssa154 = 0, $$lcssa155 = 0, $$lcssa157 = 0, $$lcssa158 = 0, $$lcssa160 = 0, $$lcssa161 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $105 = 0, $107 = 0, $108 = 0, $11 = 0, $110 = 0, $111 = 0, $113 = 0, $114 = 0, $116 = 0, $117 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $123 = 0, $125 = 0, $126 = 0, $128 = 0, $129 = 0, $13 = 0, $131 = 0, $132 = 0, $134 = 0, $138 = 0, $14 = 0, $141 = 0, $145 = 0, $148 = 0, $148$phi = 0, $149 = 0, $15 = 0, $156 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $165 = 0, $17 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $18 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $19 = 0, $190 = 0, $192 = 0, $195 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $21 = 0, $211 = 0, $214 = 0, $214$phi = 0, $215 = 0, $22 = 0, $222 = 0, $223 = 0, $225 = 0, $229 = 0, $23 = 0, $231 = 0, $236 = 0, $238 = 0, $239 = 0, $24 = 0, $241 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $255 = 0, $257 = 0, $260 = 0, $261 = 0, $265 = 0, $269 = 0, $272 = 0, $276 = 0, $279 = 0, $279$phi = 0, $280 = 0, $287 = 0, $288 = 0, $290 = 0, $294 = 0, $296 = 0, $3 = 0, $301 = 0, $303 = 0, $304 = 0, $306 = 0, $31 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $320 = 0, $322 = 0, $325 = 0, $326 = 0, $333 = 0, $334 = 0, $34 = 0, $340 = 0, $346 = 0, $35 = 0, $354 = 0, $356 = 0, $357 = 0, $360 = 0, $365 = 0, $372 = 0, $373 = 0, $382 = 0, $384 = 0, $394 = 0, $4 = 0, $43 = 0, $44 = 0, $46 = 0, $5 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $60 = 0, $62 = 0, $65 = 0, $66 = 0, $69 = 0, $7 = 0, $70 = 0, $72 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $86 = 0, $88 = 0, $9 = 0, $91 = 0, $92 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__p$0$i$i116 = 0, $__p$0$ph$i$i = 0, $e$0$i124 = 0, $e$0$i124$lcssa153 = 0, $e$0$i33128 = 0, $e$0$i33128$lcssa156 = 0, $e$0$i52132 = 0, $e$0$i52132$lcssa159 = 0, $n$0120 = 0, $n$0120$lcssa = 0, $num$i51 = 0, $t$0$i125 = 0, $t$0$i34129 = 0, $t$0$i53133 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer4 = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 480 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer4 = sp + 72 | 0;
 $vararg_buffer1 = sp + 48 | 0;
 $vararg_buffer = sp + 24 | 0;
 $0 = sp;
 $num$i51 = sp + 432 | 0;
 $1 = sp + 408 | 0;
 $2 = sp + 396 | 0;
 $3 = sp + 384 | 0;
 $4 = sp + 360 | 0;
 $5 = sp + 336 | 0;
 $6 = sp + 320 | 0;
 $7 = sp + 308 | 0;
 $8 = sp + 296 | 0;
 $9 = sp + 284 | 0;
 $10 = sp + 272 | 0;
 $11 = sp + 260 | 0;
 $12 = sp + 248 | 0;
 $13 = sp + 236 | 0;
 $14 = sp + 224 | 0;
 $15 = sp + 212 | 0;
 $16 = sp + 200 | 0;
 $17 = sp + 188 | 0;
 $18 = sp + 176 | 0;
 $19 = sp + 152 | 0;
 $20 = sp + 140 | 0;
 $21 = sp + 128 | 0;
 $22 = sp + 116 | 0;
 $23 = sp + 104 | 0;
 $24 = sp + 92 | 0;
 $25 = $last;
 L1 : do if (($25 - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 76) {
  $31 = $first + 1 | 0;
  do switch (HEAP8[$31 >> 0] | 0) {
  case 84:
   {
    $$0 = $first;
    break L1;
    break;
   }
  case 119:
   {
    $34 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 13764, 7);
    $35 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($34, $last, $3, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
    $$0 = ($35 | 0) == ($34 | 0) ? $first : $35;
    break L1;
    break;
   }
  case 98:
   {
    if ((HEAP8[$first + 3 >> 0] | 0) != 69) {
     $$0 = $first;
     break L1;
    }
    switch (HEAP8[$first + 2 >> 0] | 0) {
    case 48:
     {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($4, 13772);
      $43 = $db + 4 | 0;
      $44 = HEAP32[$43 >> 2] | 0;
      $46 = HEAP32[$db + 8 >> 2] | 0;
      if ($44 >>> 0 < $46 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($44, $4);
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 24;
      } else {
       $53 = HEAP32[$db >> 2] | 0;
       $54 = $44 - $53 | 0;
       $55 = ($54 | 0) / 24 | 0;
       $56 = $55 + 1 | 0;
       if (($54 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $60 = ($46 - $53 | 0) / 24 | 0;
       if ($60 >>> 0 < 1073741823) {
        $62 = $60 << 1;
        $$0$i$i$i = $62 >>> 0 < $56 >>> 0 ? $56 : $62;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i, $55, $db + 12 | 0);
       $65 = $0 + 8 | 0;
       $66 = HEAP32[$65 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($66, $4);
       HEAP32[$65 >> 2] = $66 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);
      $$0 = $first + 4 | 0;
      break L1;
      break;
     }
    case 49:
     {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($5, 13778);
      $69 = $db + 4 | 0;
      $70 = HEAP32[$69 >> 2] | 0;
      $72 = HEAP32[$db + 8 >> 2] | 0;
      if ($70 >>> 0 < $72 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($70, $5);
       HEAP32[$69 >> 2] = (HEAP32[$69 >> 2] | 0) + 24;
      } else {
       $79 = HEAP32[$db >> 2] | 0;
       $80 = $70 - $79 | 0;
       $81 = ($80 | 0) / 24 | 0;
       $82 = $81 + 1 | 0;
       if (($80 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $86 = ($72 - $79 | 0) / 24 | 0;
       if ($86 >>> 0 < 1073741823) {
        $88 = $86 << 1;
        $$0$i$i$i26 = $88 >>> 0 < $82 >>> 0 ? $82 : $88;
       } else $$0$i$i$i26 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($0, $$0$i$i$i26, $81, $db + 12 | 0);
       $91 = $0 + 8 | 0;
       $92 = HEAP32[$91 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($92, $5);
       HEAP32[$91 >> 2] = $92 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $0);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($0);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
      $$0 = $first + 4 | 0;
      break L1;
      break;
     }
    default:
     {
      $$0 = $first;
      break L1;
     }
    }
    break;
   }
  case 99:
   {
    $95 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($6, 13783, 4);
    $96 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($95, $last, $6, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($6);
    $$0 = ($96 | 0) == ($95 | 0) ? $first : $96;
    break L1;
    break;
   }
  case 97:
   {
    $98 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($7, 13788, 11);
    $99 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($98, $last, $7, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($7);
    $$0 = ($99 | 0) == ($98 | 0) ? $first : $99;
    break L1;
    break;
   }
  case 104:
   {
    $101 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($8, 13800, 13);
    $102 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($101, $last, $8, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($8);
    $$0 = ($102 | 0) == ($101 | 0) ? $first : $102;
    break L1;
    break;
   }
  case 115:
   {
    $104 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($9, 13814, 5);
    $105 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($104, $last, $9, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($9);
    $$0 = ($105 | 0) == ($104 | 0) ? $first : $105;
    break L1;
    break;
   }
  case 116:
   {
    $107 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($10, 13820, 14);
    $108 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($107, $last, $10, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($10);
    $$0 = ($108 | 0) == ($107 | 0) ? $first : $108;
    break L1;
    break;
   }
  case 105:
   {
    $110 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($11, 13835, 0);
    $111 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($110, $last, $11, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($11);
    $$0 = ($111 | 0) == ($110 | 0) ? $first : $111;
    break L1;
    break;
   }
  case 106:
   {
    $113 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($12, 13836, 1);
    $114 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($113, $last, $12, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($12);
    $$0 = ($114 | 0) == ($113 | 0) ? $first : $114;
    break L1;
    break;
   }
  case 108:
   {
    $116 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($13, 13838, 1);
    $117 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($116, $last, $13, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($13);
    $$0 = ($117 | 0) == ($116 | 0) ? $first : $117;
    break L1;
    break;
   }
  case 109:
   {
    $119 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($14, 13840, 2);
    $120 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($119, $last, $14, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($14);
    $$0 = ($120 | 0) == ($119 | 0) ? $first : $120;
    break L1;
    break;
   }
  case 120:
   {
    $122 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($15, 13843, 2);
    $123 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($122, $last, $15, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($15);
    $$0 = ($123 | 0) == ($122 | 0) ? $first : $123;
    break L1;
    break;
   }
  case 121:
   {
    $125 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($16, 13846, 3);
    $126 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($125, $last, $16, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($16);
    $$0 = ($126 | 0) == ($125 | 0) ? $first : $126;
    break L1;
    break;
   }
  case 110:
   {
    $128 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($17, 13850, 8);
    $129 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($128, $last, $17, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($17);
    $$0 = ($129 | 0) == ($128 | 0) ? $first : $129;
    break L1;
    break;
   }
  case 111:
   {
    $131 = $first + 2 | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($18, 13859, 17);
    $132 = __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($131, $last, $18, $db) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($18);
    $$0 = ($132 | 0) == ($131 | 0) ? $first : $132;
    break L1;
    break;
   }
  case 102:
   {
    $134 = $first + 2 | 0;
    L67 : do if (($25 - $134 | 0) >>> 0 > 8) {
     $138 = $first + 10 | 0;
     $141 = HEAP8[$134 >> 0] | 0;
     $148 = $first;
     $e$0$i124 = $0;
     $t$0$i125 = $134;
     while (1) {
      if (!(_isxdigit($141 << 24 >> 24) | 0)) {
       $$0$i = $134;
       break L67;
      }
      $145 = HEAP8[$t$0$i125 >> 0] | 0;
      $149 = HEAP8[$148 + 3 >> 0] | 0;
      HEAP8[$e$0$i124 >> 0] = ((($149 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($149 & 255) + ((($145 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $145 << 4);
      $156 = $t$0$i125 + 2 | 0;
      $157 = $e$0$i124 + 1 | 0;
      $159 = HEAP8[$156 >> 0] | 0;
      if (($156 | 0) == ($138 | 0)) {
       $$lcssa154 = $157;
       $$lcssa155 = $159;
       $e$0$i124$lcssa153 = $e$0$i124;
       break;
      } else {
       $148$phi = $t$0$i125;
       $141 = $159;
       $e$0$i124 = $157;
       $t$0$i125 = $156;
       $148 = $148$phi;
      }
     }
     if ($$lcssa155 << 24 >> 24 == 69) {
      if (($0 | 0) != ($$lcssa154 | 0) & $0 >>> 0 < $e$0$i124$lcssa153 >>> 0) {
       $$01$i$i$i122 = $0;
       $165 = $e$0$i124$lcssa153;
       do {
        $163 = HEAP8[$$01$i$i$i122 >> 0] | 0;
        HEAP8[$$01$i$i$i122 >> 0] = HEAP8[$165 >> 0] | 0;
        HEAP8[$165 >> 0] = $163;
        $$01$i$i$i122 = $$01$i$i$i122 + 1 | 0;
        $165 = $165 + -1 | 0;
       } while ($$01$i$i$i122 >>> 0 < $165 >>> 0);
      }
      dest = $num$i51;
      stop = dest + 24 | 0;
      do {
       HEAP8[dest >> 0] = 0;
       dest = dest + 1 | 0;
      } while ((dest | 0) < (stop | 0));
      HEAPF64[$vararg_buffer >> 3] = +HEAPF32[$0 >> 2];
      $171 = _snprintf($num$i51, 24, 13877, $vararg_buffer) | 0;
      if ($171 >>> 0 > 23) $$0$i = $134; else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $171);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
       $173 = $db + 4 | 0;
       $174 = HEAP32[$173 >> 2] | 0;
       $176 = HEAP32[$db + 8 >> 2] | 0;
       if ($174 >>> 0 < $176 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($174, $1);
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 24;
       } else {
        $183 = HEAP32[$db >> 2] | 0;
        $184 = $174 - $183 | 0;
        $185 = ($184 | 0) / 24 | 0;
        $186 = $185 + 1 | 0;
        if (($184 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $190 = ($176 - $183 | 0) / 24 | 0;
        if ($190 >>> 0 < 1073741823) {
         $192 = $190 << 1;
         $$0$i$i$i$i = $192 >>> 0 < $186 >>> 0 ? $186 : $192;
        } else $$0$i$i$i$i = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer, $$0$i$i$i$i, $185, $db + 12 | 0);
        $195 = $vararg_buffer + 8 | 0;
        $196 = HEAP32[$195 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($196, $1);
        HEAP32[$195 >> 2] = $196 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
       $$0$i = $first + 11 | 0;
      }
     } else $$0$i = $134;
    } else $$0$i = $134; while (0);
    $$0 = ($$0$i | 0) == ($134 | 0) ? $first : $$0$i;
    break L1;
    break;
   }
  case 100:
   {
    $200 = $first + 2 | 0;
    L91 : do if (($25 - $200 | 0) >>> 0 > 16) {
     $204 = $first + 18 | 0;
     $207 = HEAP8[$200 >> 0] | 0;
     $214 = $first;
     $e$0$i33128 = $0;
     $t$0$i34129 = $200;
     while (1) {
      if (!(_isxdigit($207 << 24 >> 24) | 0)) {
       $$0$i49 = $200;
       break L91;
      }
      $211 = HEAP8[$t$0$i34129 >> 0] | 0;
      $215 = HEAP8[$214 + 3 >> 0] | 0;
      HEAP8[$e$0$i33128 >> 0] = ((($215 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($215 & 255) + ((($211 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $211 << 4);
      $222 = $t$0$i34129 + 2 | 0;
      $223 = $e$0$i33128 + 1 | 0;
      $225 = HEAP8[$222 >> 0] | 0;
      if (($222 | 0) == ($204 | 0)) {
       $$lcssa157 = $223;
       $$lcssa158 = $225;
       $e$0$i33128$lcssa156 = $e$0$i33128;
       break;
      } else {
       $214$phi = $t$0$i34129;
       $207 = $225;
       $e$0$i33128 = $223;
       $t$0$i34129 = $222;
       $214 = $214$phi;
      }
     }
     if ($$lcssa158 << 24 >> 24 == 69) {
      if (($0 | 0) != ($$lcssa157 | 0) & $0 >>> 0 < $e$0$i33128$lcssa156 >>> 0) {
       $$01$i$i$i41126 = $0;
       $231 = $e$0$i33128$lcssa156;
       do {
        $229 = HEAP8[$$01$i$i$i41126 >> 0] | 0;
        HEAP8[$$01$i$i$i41126 >> 0] = HEAP8[$231 >> 0] | 0;
        HEAP8[$231 >> 0] = $229;
        $$01$i$i$i41126 = $$01$i$i$i41126 + 1 | 0;
        $231 = $231 + -1 | 0;
       } while ($$01$i$i$i41126 >>> 0 < $231 >>> 0);
      }
      dest = $num$i51;
      stop = dest + 32 | 0;
      do {
       HEAP8[dest >> 0] = 0;
       dest = dest + 1 | 0;
      } while ((dest | 0) < (stop | 0));
      HEAPF64[$vararg_buffer1 >> 3] = +HEAPF64[$0 >> 3];
      $236 = _snprintf($num$i51, 32, 13881, $vararg_buffer1) | 0;
      if ($236 >>> 0 > 31) $$0$i49 = $200; else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $236);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
       $238 = $db + 4 | 0;
       $239 = HEAP32[$238 >> 2] | 0;
       $241 = HEAP32[$db + 8 >> 2] | 0;
       if ($239 >>> 0 < $241 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($239, $1);
        HEAP32[$238 >> 2] = (HEAP32[$238 >> 2] | 0) + 24;
       } else {
        $248 = HEAP32[$db >> 2] | 0;
        $249 = $239 - $248 | 0;
        $250 = ($249 | 0) / 24 | 0;
        $251 = $250 + 1 | 0;
        if (($249 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $255 = ($241 - $248 | 0) / 24 | 0;
        if ($255 >>> 0 < 1073741823) {
         $257 = $255 << 1;
         $$0$i$i$i$i46 = $257 >>> 0 < $251 >>> 0 ? $251 : $257;
        } else $$0$i$i$i$i46 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer1, $$0$i$i$i$i46, $250, $db + 12 | 0);
        $260 = $vararg_buffer1 + 8 | 0;
        $261 = HEAP32[$260 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($261, $1);
        HEAP32[$260 >> 2] = $261 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer1);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer1);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
       $$0$i49 = $first + 19 | 0;
      }
     } else $$0$i49 = $200;
    } else $$0$i49 = $200; while (0);
    $$0 = ($$0$i49 | 0) == ($200 | 0) ? $first : $$0$i49;
    break L1;
    break;
   }
  case 101:
   {
    $265 = $first + 2 | 0;
    L115 : do if (($25 - $265 | 0) >>> 0 > 20) {
     $269 = $first + 22 | 0;
     $272 = HEAP8[$265 >> 0] | 0;
     $279 = $first;
     $e$0$i52132 = $0;
     $t$0$i53133 = $265;
     while (1) {
      if (!(_isxdigit($272 << 24 >> 24) | 0)) {
       $$1$i = $265;
       break L115;
      }
      $276 = HEAP8[$t$0$i53133 >> 0] | 0;
      $280 = HEAP8[$279 + 3 >> 0] | 0;
      HEAP8[$e$0$i52132 >> 0] = ((($280 << 24 >> 24) + -48 | 0) >>> 0 < 10 ? 208 : 169) + ($280 & 255) + ((($276 + -48 | 0) >>> 0 < 10 ? 0 : 9) + $276 << 4);
      $287 = $t$0$i53133 + 2 | 0;
      $288 = $e$0$i52132 + 1 | 0;
      $290 = HEAP8[$287 >> 0] | 0;
      if (($287 | 0) == ($269 | 0)) {
       $$lcssa160 = $288;
       $$lcssa161 = $290;
       $e$0$i52132$lcssa159 = $e$0$i52132;
       break;
      } else {
       $279$phi = $t$0$i53133;
       $272 = $290;
       $e$0$i52132 = $288;
       $t$0$i53133 = $287;
       $279 = $279$phi;
      }
     }
     if ($$lcssa161 << 24 >> 24 == 69) {
      if (($0 | 0) != ($$lcssa160 | 0) & $0 >>> 0 < $e$0$i52132$lcssa159 >>> 0) {
       $$01$i$i$i57130 = $0;
       $296 = $e$0$i52132$lcssa159;
       do {
        $294 = HEAP8[$$01$i$i$i57130 >> 0] | 0;
        HEAP8[$$01$i$i$i57130 >> 0] = HEAP8[$296 >> 0] | 0;
        HEAP8[$296 >> 0] = $294;
        $$01$i$i$i57130 = $$01$i$i$i57130 + 1 | 0;
        $296 = $296 + -1 | 0;
       } while ($$01$i$i$i57130 >>> 0 < $296 >>> 0);
      }
      dest = $num$i51;
      stop = dest + 40 | 0;
      do {
       HEAP8[dest >> 0] = 0;
       dest = dest + 1 | 0;
      } while ((dest | 0) < (stop | 0));
      HEAPF64[$vararg_buffer4 >> 3] = +HEAPF64[$0 >> 3];
      $301 = _snprintf($num$i51, 40, 13884, $vararg_buffer4) | 0;
      if ($301 >>> 0 > 39) {
       $$1$i = $265;
       break;
      }
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($2, $num$i51, $301);
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
      $303 = $db + 4 | 0;
      $304 = HEAP32[$303 >> 2] | 0;
      $306 = HEAP32[$db + 8 >> 2] | 0;
      if ($304 >>> 0 < $306 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($304, $1);
       HEAP32[$303 >> 2] = (HEAP32[$303 >> 2] | 0) + 24;
      } else {
       $313 = HEAP32[$db >> 2] | 0;
       $314 = $304 - $313 | 0;
       $315 = ($314 | 0) / 24 | 0;
       $316 = $315 + 1 | 0;
       if (($314 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $320 = ($306 - $313 | 0) / 24 | 0;
       if ($320 >>> 0 < 1073741823) {
        $322 = $320 << 1;
        $$0$i$i$i$i62 = $322 >>> 0 < $316 >>> 0 ? $316 : $322;
       } else $$0$i$i$i$i62 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($vararg_buffer4, $$0$i$i$i$i62, $315, $db + 12 | 0);
       $325 = $vararg_buffer4 + 8 | 0;
       $326 = HEAP32[$325 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($326, $1);
       HEAP32[$325 >> 2] = $326 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $vararg_buffer4);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($vararg_buffer4);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
      $$1$i = $first + 23 | 0;
     } else $$1$i = $265;
    } else $$1$i = $265; while (0);
    $$0 = ($$1$i | 0) == ($265 | 0) ? $first : $$1$i;
    break L1;
    break;
   }
  case 95:
   {
    if ((HEAP8[$first + 2 >> 0] | 0) != 90) {
     $$0 = $first;
     break L1;
    }
    $333 = $first + 3 | 0;
    $334 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($333, $last, $db) | 0;
    if (($334 | 0) == ($333 | 0) | ($334 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    STACKTOP = sp;
    return ((HEAP8[$334 >> 0] | 0) == 69 ? $334 + 1 | 0 : $first) | 0;
   }
  default:
   {
    $340 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($31, $last, $db) | 0;
    if (($340 | 0) == ($31 | 0) | ($340 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    if ((HEAP8[$340 >> 0] | 0) == 69) {
     $$0 = $340 + 1 | 0;
     break L1;
    }
    if (($340 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    } else $n$0120 = $340;
    while (1) {
     $346 = HEAP8[$n$0120 >> 0] | 0;
     if ((($346 << 24 >> 24) + -48 | 0) >>> 0 >= 10) {
      $$lcssa = $346;
      $n$0120$lcssa = $n$0120;
      break;
     }
     $n$0120 = $n$0120 + 1 | 0;
     if (($n$0120 | 0) == ($last | 0)) {
      $$0 = $first;
      break L1;
     }
    }
    if (!(($n$0120$lcssa | 0) != ($340 | 0) & $$lcssa << 24 >> 24 == 69)) {
     $$0 = $first;
     break L1;
    }
    $354 = HEAP32[$db + 4 >> 2] | 0;
    if ((HEAP32[$db >> 2] | 0) == ($354 | 0)) {
     $$0 = $first;
     break L1;
    }
    $356 = $354 + -24 | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($23, $356);
    $357 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($23, 0, 12714) | 0;
    HEAP32[$22 >> 2] = HEAP32[$357 >> 2];
    HEAP32[$22 + 4 >> 2] = HEAP32[$357 + 4 >> 2];
    HEAP32[$22 + 8 >> 2] = HEAP32[$357 + 8 >> 2];
    HEAP32[$357 >> 2] = 0;
    HEAP32[$357 + 4 >> 2] = 0;
    HEAP32[$357 + 8 >> 2] = 0;
    $360 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($22, 12619) | 0;
    HEAP32[$21 >> 2] = HEAP32[$360 >> 2];
    HEAP32[$21 + 4 >> 2] = HEAP32[$360 + 4 >> 2];
    HEAP32[$21 + 8 >> 2] = HEAP32[$360 + 8 >> 2];
    HEAP32[$360 >> 2] = 0;
    HEAP32[$360 + 4 >> 2] = 0;
    HEAP32[$360 + 8 >> 2] = 0;
    $365 = $n$0120$lcssa - $340 | 0;
    if ($365 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($24);
    if ($365 >>> 0 < 11) {
     HEAP8[$24 >> 0] = $365 << 1;
     $__p$0$ph$i$i = $24 + 1 | 0;
    } else {
     $372 = $365 + 16 & -16;
     $373 = _malloc($372) | 0;
     HEAP32[$24 + 8 >> 2] = $373;
     HEAP32[$24 >> 2] = $372 | 1;
     HEAP32[$24 + 4 >> 2] = $365;
     $__p$0$ph$i$i = $373;
    }
    if (($340 | 0) != ($n$0120$lcssa | 0)) {
     $$0$i$i117 = $340;
     $__p$0$i$i116 = $__p$0$ph$i$i;
     while (1) {
      HEAP8[$__p$0$i$i116 >> 0] = HEAP8[$$0$i$i117 >> 0] | 0;
      $$0$i$i117 = $$0$i$i117 + 1 | 0;
      if (($$0$i$i117 | 0) == ($n$0120$lcssa | 0)) break; else $__p$0$i$i116 = $__p$0$i$i116 + 1 | 0;
     }
    }
    HEAP8[$__p$0$ph$i$i + $365 >> 0] = 0;
    $382 = HEAP8[$24 >> 0] | 0;
    $384 = ($382 & 1) == 0;
    $394 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($21, $384 ? $24 + 1 | 0 : HEAP32[$24 + 8 >> 2] | 0, $384 ? ($382 & 255) >>> 1 : HEAP32[$24 + 4 >> 2] | 0) | 0;
    HEAP32[$20 >> 2] = HEAP32[$394 >> 2];
    HEAP32[$20 + 4 >> 2] = HEAP32[$394 + 4 >> 2];
    HEAP32[$20 + 8 >> 2] = HEAP32[$394 + 8 >> 2];
    HEAP32[$394 >> 2] = 0;
    HEAP32[$394 + 4 >> 2] = 0;
    HEAP32[$394 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($19, $20);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($356, $19);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($19);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($20);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($24);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($21);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($22);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($23);
    $$0 = $n$0120$lcssa + 1 | 0;
    break L1;
   }
  } while (0);
 } else $$0 = $first; else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0$i = 0, $$24$ph = 0, $$7 = 0, $$in = 0, $$in109 = 0, $$lcssa150 = 0, $$lcssa151 = 0, $$lcssa156 = 0, $$ph96 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $111 = 0, $118 = 0, $120 = 0, $123 = 0, $127 = 0, $13 = 0, $130 = 0, $135 = 0, $136 = 0, $139 = 0, $140 = 0, $142 = 0, $143 = 0, $152 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $171 = 0, $175 = 0, $176 = 0, $18 = 0, $180 = 0, $183 = 0, $184 = 0, $188 = 0, $191 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $206 = 0, $207 = 0, $209 = 0, $21 = 0, $215 = 0, $22 = 0, $226 = 0, $228 = 0, $240 = 0, $252 = 0, $255 = 0, $257 = 0, $26 = 0, $264 = 0, $267 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $277 = 0, $281 = 0, $284 = 0, $287 = 0, $29 = 0, $3 = 0, $30 = 0, $303 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $318 = 0, $320 = 0, $331 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $345 = 0, $347 = 0, $349 = 0, $350 = 0, $356 = 0, $361 = 0, $37 = 0, $371 = 0, $373 = 0, $38 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $389 = 0, $392 = 0, $398 = 0, $4 = 0, $402 = 0, $404 = 0, $405 = 0, $411 = 0, $413 = 0, $414 = 0, $42 = 0, $434 = 0, $436 = 0, $446 = 0, $45 = 0, $46 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $58 = 0, $6 = 0, $62 = 0, $65 = 0, $66 = 0, $68 = 0, $7 = 0, $73 = 0, $74 = 0, $76 = 0, $77 = 0, $8 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $90 = 0, $91 = 0, $94 = 0, $99 = 0, $first_arg$0$off0$ph = 0, $first_arg$3$off0$ph = 0, $k$0121 = 0, $k2$0122 = 0, $left$i = 0, $phitmp$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i = 0, $ret1 = 0, $ret2 = 0, $t$0 = 0, $t$1 = 0, $t$1$ph = 0, $t$2 = 0, $tmp = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $left$i = sp + 96 | 0;
 $0 = sp + 84 | 0;
 $1 = sp + 72 | 0;
 $2 = sp + 60 | 0;
 $3 = sp + 48 | 0;
 $ret2 = sp + 36 | 0;
 $ret1 = sp + 24 | 0;
 $tmp = sp + 12 | 0;
 $4 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$7 = $first; else {
  $6 = $db + 56 | 0;
  $7 = HEAP32[$6 >> 2] | 0;
  $8 = $7 + 1 | 0;
  HEAP32[$6 >> 2] = $8;
  $9 = $db + 61 | 0;
  $10 = HEAP8[$9 >> 0] | 0;
  if ($8 >>> 0 > 1) HEAP8[$9 >> 0] = 1;
  $13 = HEAP8[$first >> 0] | 0;
  L6 : do switch ($13 | 0) {
  case 84:
  case 71:
   {
    L107 : do if (($last - $first | 0) > 2) {
     switch ($13 | 0) {
     case 84:
      break;
     case 71:
      {
       switch (HEAP8[$first + 1 >> 0] | 0) {
       case 86:
        {
         $175 = $first + 2 | 0;
         $176 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($175, $last, $db) | 0;
         if (($176 | 0) == ($175 | 0)) {
          $$0$i = $first;
          break L107;
         }
         $180 = HEAP32[$db + 4 >> 2] | 0;
         if ((HEAP32[$db >> 2] | 0) == ($180 | 0)) {
          $$0$i = $first;
          break L107;
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($180 + -24 | 0, 0, 14547) | 0;
         $$0$i = $176;
         break L107;
         break;
        }
       case 82:
        {
         $183 = $first + 2 | 0;
         $184 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($183, $last, $db) | 0;
         if (($184 | 0) == ($183 | 0)) {
          $$0$i = $first;
          break L107;
         }
         $188 = HEAP32[$db + 4 >> 2] | 0;
         if ((HEAP32[$db >> 2] | 0) == ($188 | 0)) {
          $$0$i = $first;
          break L107;
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($188 + -24 | 0, 0, 14567) | 0;
         $$0$i = $184;
         break L107;
         break;
        }
       default:
        {
         $$0$i = $first;
         break L107;
        }
       }
       break;
      }
     default:
      {
       $$0$i = $first;
       break L107;
      }
     }
     $18 = $first + 1 | 0;
     switch (HEAP8[$18 >> 0] | 0) {
     case 86:
      {
       $21 = $first + 2 | 0;
       $22 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0;
       if (($22 | 0) == ($21 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $26 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($26 | 0)) {
        $$0$i = $first;
        break L107;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($26 + -24 | 0, 0, 14396) | 0;
       $$0$i = $22;
       break L107;
       break;
      }
     case 84:
      {
       $29 = $first + 2 | 0;
       $30 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($29, $last, $db) | 0;
       if (($30 | 0) == ($29 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $34 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($34 | 0)) {
        $$0$i = $first;
        break L107;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($34 + -24 | 0, 0, 14408) | 0;
       $$0$i = $30;
       break L107;
       break;
      }
     case 73:
      {
       $37 = $first + 2 | 0;
       $38 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($37, $last, $db) | 0;
       if (($38 | 0) == ($37 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $42 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($42 | 0)) {
        $$0$i = $first;
        break L107;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($42 + -24 | 0, 0, 14417) | 0;
       $$0$i = $38;
       break L107;
       break;
      }
     case 83:
      {
       $45 = $first + 2 | 0;
       $46 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($45, $last, $db) | 0;
       if (($46 | 0) == ($45 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $50 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($50 | 0)) {
        $$0$i = $first;
        break L107;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($50 + -24 | 0, 0, 14431) | 0;
       $$0$i = $46;
       break L107;
       break;
      }
     case 99:
      {
       $53 = $first + 2 | 0;
       $54 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($53, $last) | 0;
       if (($54 | 0) == ($53 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $56 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($54, $last) | 0;
       if (($56 | 0) == ($54 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $58 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($56, $last, $db) | 0;
       if (($58 | 0) == ($56 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $62 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($62 | 0)) {
        $$0$i = $first;
        break L107;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($62 + -24 | 0, 0, 14450) | 0;
       $$0$i = $58;
       break L107;
       break;
      }
     case 67:
      {
       $65 = $first + 2 | 0;
       $66 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($65, $last, $db) | 0;
       if (($66 | 0) == ($65 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $68 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($66, $last) | 0;
       if (($68 | 0) == ($66 | 0) | ($68 | 0) == ($last | 0)) {
        $$0$i = $first;
        break L107;
       }
       if ((HEAP8[$68 >> 0] | 0) != 95) {
        $$0$i = $first;
        break L107;
       }
       $73 = $68 + 1 | 0;
       $74 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($73, $last, $db) | 0;
       if (($74 | 0) == ($73 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $76 = $db + 4 | 0;
       $77 = HEAP32[$76 >> 2] | 0;
       if ((($77 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
        $$0$i = $first;
        break L107;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($left$i, $77 + -24 | 0);
       $85 = HEAP32[$76 >> 2] | 0;
       $86 = $85 + -24 | 0;
       $88 = $85;
       do {
        $87 = $88 + -24 | 0;
        HEAP32[$76 >> 2] = $87;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($87);
        $88 = HEAP32[$76 >> 2] | 0;
       } while (($88 | 0) != ($86 | 0));
       $90 = $85 + -48 | 0;
       $91 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($left$i, 0, 14477) | 0;
       HEAP32[$2 >> 2] = HEAP32[$91 >> 2];
       HEAP32[$2 + 4 >> 2] = HEAP32[$91 + 4 >> 2];
       HEAP32[$2 + 8 >> 2] = HEAP32[$91 + 8 >> 2];
       HEAP32[$91 >> 2] = 0;
       HEAP32[$91 + 4 >> 2] = 0;
       HEAP32[$91 + 8 >> 2] = 0;
       $94 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 14502) | 0;
       HEAP32[$1 >> 2] = HEAP32[$94 >> 2];
       HEAP32[$1 + 4 >> 2] = HEAP32[$94 + 4 >> 2];
       HEAP32[$1 + 8 >> 2] = HEAP32[$94 + 8 >> 2];
       HEAP32[$94 >> 2] = 0;
       HEAP32[$94 + 4 >> 2] = 0;
       HEAP32[$94 + 8 >> 2] = 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$76 >> 2] | 0) + -24 | 0);
       $99 = HEAP8[$3 >> 0] | 0;
       $101 = ($99 & 1) == 0;
       $111 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($1, $101 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $101 ? ($99 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;
       HEAP32[$0 >> 2] = HEAP32[$111 >> 2];
       HEAP32[$0 + 4 >> 2] = HEAP32[$111 + 4 >> 2];
       HEAP32[$0 + 8 >> 2] = HEAP32[$111 + 8 >> 2];
       HEAP32[$111 >> 2] = 0;
       HEAP32[$111 + 4 >> 2] = 0;
       HEAP32[$111 + 8 >> 2] = 0;
       do if (!(HEAP8[$90 >> 0] & 1)) {
        HEAP8[$90 + 1 >> 0] = 0;
        HEAP8[$90 >> 0] = 0;
       } else {
        $118 = $85 + -40 | 0;
        HEAP8[HEAP32[$118 >> 2] >> 0] = 0;
        $120 = $85 + -44 | 0;
        HEAP32[$120 >> 2] = 0;
        $$pre$i$i$i$i = HEAP8[$90 >> 0] | 0;
        if (!($$pre$i$i$i$i & 1)) {
         $127 = $$pre$i$i$i$i;
         $136 = 10;
        } else {
         $123 = HEAP32[$90 >> 2] | 0;
         $127 = $123 & 255;
         $136 = ($123 & -2) + -1 | 0;
        }
        if (!($127 & 1)) {
         $130 = ($127 & 255) >>> 1;
         if (($127 & 255) < 22) {
          $135 = 10;
          $155 = $130;
          $446 = 1;
         } else {
          $135 = ($130 + 16 & 240) + -1 | 0;
          $155 = $130;
          $446 = 1;
         }
        } else {
         $135 = 10;
         $155 = 0;
         $446 = 0;
        }
        if (($135 | 0) != ($136 | 0)) {
         if (($135 | 0) == 10) {
          $142 = $90 + 1 | 0;
          $143 = HEAP32[$118 >> 2] | 0;
          if ($446) {
           _memcpy($142 | 0, $143 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0;
           _free($143);
          } else {
           HEAP8[$142 >> 0] = HEAP8[$143 >> 0] | 0;
           _free($143);
          }
          HEAP8[$90 >> 0] = $155 << 1;
          break;
         }
         $139 = $135 + 1 | 0;
         $140 = _malloc($139) | 0;
         if (!($135 >>> 0 <= $136 >>> 0 & ($140 | 0) == 0)) {
          if ($446) _memcpy($140 | 0, $90 + 1 | 0, (($127 & 255) >>> 1) + 1 | 0) | 0; else {
           $152 = HEAP32[$118 >> 2] | 0;
           HEAP8[$140 >> 0] = HEAP8[$152 >> 0] | 0;
           _free($152);
          }
          HEAP32[$90 >> 2] = $139 | 1;
          HEAP32[$120 >> 2] = $155;
          HEAP32[$118 >> 2] = $140;
         }
        }
       } while (0);
       HEAP32[$90 >> 2] = HEAP32[$0 >> 2];
       HEAP32[$90 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
       HEAP32[$90 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
       HEAP32[$0 >> 2] = 0;
       HEAP32[$0 + 4 >> 2] = 0;
       HEAP32[$0 + 8 >> 2] = 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($left$i);
       $$0$i = $74;
       break L107;
       break;
      }
     default:
      {
       $160 = __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($18, $last) | 0;
       if (($160 | 0) == ($18 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $162 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($160, $last, $db) | 0;
       if (($162 | 0) == ($160 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $166 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($166 | 0)) {
        $$0$i = $first;
        break L107;
       }
       $171 = $166 + -24 | 0;
       if ((HEAP8[$first + 2 >> 0] | 0) == 118) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14507) | 0;
        $$0$i = $162;
        break L107;
       } else {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($171, 0, 14525) | 0;
        $$0$i = $162;
        break L107;
       }
      }
     }
    } else $$0$i = $first; while (0);
    $$24$ph = $$0$i;
    break;
   }
  default:
   {
    $191 = __ZN10__cxxabiv112_GLOBAL__N_110parse_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    $193 = HEAP32[$db + 48 >> 2] | 0;
    $195 = HEAP32[$db + 52 >> 2] | 0;
    if (($191 | 0) == ($first | 0)) $$24$ph = $first; else if (($191 | 0) == ($last | 0)) $$24$ph = $last; else {
     switch (HEAP8[$191 >> 0] | 0) {
     case 46:
     case 69:
      {
       $$24$ph = $191;
       break L6;
       break;
      }
     default:
      {}
     }
     $199 = HEAP8[$9 >> 0] | 0;
     HEAP8[$9 >> 0] = 0;
     HEAP32[$ret2 >> 2] = 0;
     HEAP32[$ret2 + 4 >> 2] = 0;
     HEAP32[$ret2 + 8 >> 2] = 0;
     $203 = $db + 4 | 0;
     $204 = HEAP32[$203 >> 2] | 0;
     L11 : do if ((HEAP32[$db >> 2] | 0) != ($204 | 0)) {
      $206 = $204 + -24 | 0;
      $207 = HEAP8[$206 >> 0] | 0;
      $209 = ($207 & 1) == 0;
      if ($209) $215 = ($207 & 255) >>> 1; else $215 = HEAP32[$204 + -20 >> 2] | 0;
      if ($215) {
       if (!(HEAP8[$db + 60 >> 0] | 0)) {
        if ($209) {
         $226 = ($207 & 255) >>> 1;
         $228 = $206 + 1 | 0;
        } else {
         $226 = HEAP32[$204 + -20 >> 2] | 0;
         $228 = HEAP32[$204 + -16 >> 2] | 0;
        }
        if ((HEAP8[$228 + ($226 + -1) >> 0] | 0) == 62) {
         if ($209) {
          $$in = ($207 & 255) >>> 1;
          $240 = $206 + 1 | 0;
         } else {
          $$in = HEAP32[$204 + -20 >> 2] | 0;
          $240 = HEAP32[$204 + -16 >> 2] | 0;
         }
         if ((HEAP8[$240 + ($$in + -2) >> 0] | 0) == 45) {
          $331 = $204;
          $t$0 = $191;
         } else {
          if ($209) {
           $$in109 = ($207 & 255) >>> 1;
           $252 = $206 + 1 | 0;
          } else {
           $$in109 = HEAP32[$204 + -20 >> 2] | 0;
           $252 = HEAP32[$204 + -16 >> 2] | 0;
          }
          if ((HEAP8[$252 + ($$in109 + -2) >> 0] | 0) == 62) {
           $331 = $204;
           $t$0 = $191;
          } else {
           $255 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($191, $last, $db) | 0;
           if (($255 | 0) == ($191 | 0)) break;
           $257 = HEAP32[$203 >> 2] | 0;
           if ((($257 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) break;
           $264 = $257 + -24 | 0;
           HEAP32[$ret1 >> 2] = HEAP32[$264 >> 2];
           HEAP32[$ret1 + 4 >> 2] = HEAP32[$264 + 4 >> 2];
           HEAP32[$ret1 + 8 >> 2] = HEAP32[$264 + 8 >> 2];
           HEAP32[$264 >> 2] = 0;
           HEAP32[$264 + 4 >> 2] = 0;
           HEAP32[$264 + 8 >> 2] = 0;
           $267 = $257 + -12 | 0;
           L37 : do if (!(HEAP8[$ret2 >> 0] & 1)) {
            HEAP8[$ret2 + 1 >> 0] = 0;
            HEAP8[$ret2 >> 0] = 0;
           } else {
            $272 = $ret2 + 8 | 0;
            $273 = HEAP32[$272 >> 2] | 0;
            HEAP8[$273 >> 0] = 0;
            $274 = $ret2 + 4 | 0;
            HEAP32[$274 >> 2] = 0;
            $275 = HEAP32[$ret2 >> 2] | 0;
            $phitmp$i$i$i$i$i$i = ($275 & -2) + -1 | 0;
            $277 = $275 & 255;
            do if (!($277 & 1)) {
             $281 = $275 >>> 1 & 127;
             if (($277 & 255) < 22) {
              _memcpy($ret2 + 1 | 0, $273 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0;
              _free($273);
              $$ph96 = $281;
              break;
             }
             $284 = $281 + 16 & 240;
             $phitmp$i2$i$i$i$i$i = $284 + -1 | 0;
             if (($phitmp$i2$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i | 0)) break L37;
             $287 = _malloc($284) | 0;
             if ($phitmp$i2$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i >>> 0 & ($287 | 0) == 0) break L37;
             _memcpy($287 | 0, $ret2 + 1 | 0, ($275 >>> 1 & 127) + 1 | 0) | 0;
             HEAP32[$ret2 >> 2] = $284 | 1;
             HEAP32[$274 >> 2] = $281;
             HEAP32[$272 >> 2] = $287;
             break L37;
            } else {
             HEAP8[$ret2 + 1 >> 0] = 0;
             _free($273);
             $$ph96 = 0;
            } while (0);
            HEAP8[$ret2 >> 0] = $$ph96 << 1;
           } while (0);
           HEAP32[$ret2 >> 2] = HEAP32[$267 >> 2];
           HEAP32[$ret2 + 4 >> 2] = HEAP32[$267 + 4 >> 2];
           HEAP32[$ret2 + 8 >> 2] = HEAP32[$267 + 8 >> 2];
           HEAP32[$267 >> 2] = 0;
           HEAP32[$267 + 4 >> 2] = 0;
           HEAP32[$267 + 8 >> 2] = 0;
           $303 = HEAP8[$ret2 >> 0] | 0;
           if (!((($303 & 1) == 0 ? ($303 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($ret1, 32);
           $312 = HEAP32[$203 >> 2] | 0;
           $313 = $312 + -24 | 0;
           $315 = $312;
           do {
            $314 = $315 + -24 | 0;
            HEAP32[$203 >> 2] = $314;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($314);
            $315 = HEAP32[$203 >> 2] | 0;
           } while (($315 | 0) != ($313 | 0));
           $318 = HEAP8[$ret1 >> 0] | 0;
           $320 = ($318 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($312 + -48 | 0, 0, $320 ? $ret1 + 1 | 0 : HEAP32[$ret1 + 8 >> 2] | 0, $320 ? ($318 & 255) >>> 1 : HEAP32[$ret1 + 4 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret1);
           $331 = HEAP32[$203 >> 2] | 0;
           $t$0 = $255;
          }
         }
        } else {
         $331 = $204;
         $t$0 = $191;
        }
       } else {
        $331 = $204;
        $t$0 = $191;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($331 + -24 | 0, 40);
       if (($t$0 | 0) == ($last | 0)) label = 105; else if ((HEAP8[$t$0 >> 0] | 0) == 118) {
        $413 = HEAP32[$db >> 2] | 0;
        $414 = HEAP32[$203 >> 2] | 0;
        $t$2 = $t$0 + 1 | 0;
       } else label = 105;
       L60 : do if ((label | 0) == 105) {
        $335 = $tmp + 4 | 0;
        $336 = $4 + 8 | 0;
        $337 = $4 + 1 | 0;
        $338 = $4 + 4 | 0;
        $339 = $tmp + 8 | 0;
        $340 = $tmp + 1 | 0;
        $341 = $tmp + 4 | 0;
        $342 = $tmp + 8 | 0;
        $first_arg$0$off0$ph = 1;
        $t$1$ph = $t$0;
        while (1) {
         $345 = HEAP32[$203 >> 2] | 0;
         $347 = HEAP32[$db >> 2] | 0;
         $t$1 = $t$1$ph;
         while (1) {
          $349 = ($345 - $347 | 0) / 24 | 0;
          $350 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t$1, $last, $db) | 0;
          $345 = HEAP32[$203 >> 2] | 0;
          $347 = HEAP32[$db >> 2] | 0;
          $356 = ($345 - $347 | 0) / 24 | 0;
          if (($350 | 0) == ($t$1 | 0)) {
           $413 = $347;
           $414 = $345;
           $t$2 = $t$1;
           break L60;
          }
          if ($356 >>> 0 > $349 >>> 0) {
           $$lcssa150 = $349;
           $$lcssa151 = $350;
           $$lcssa156 = $356;
           break;
          } else $t$1 = $350;
         }
         HEAP32[$tmp >> 2] = 0;
         HEAP32[$341 >> 2] = 0;
         HEAP32[$342 >> 2] = 0;
         if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) {
          $k$0121 = $$lcssa150;
          do {
           $361 = HEAP8[$tmp >> 0] | 0;
           if ((($361 & 1) == 0 ? ($361 & 255) >>> 1 : HEAP32[$335 >> 2] | 0) | 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($tmp, 12716) | 0;
           __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, (HEAP32[$db >> 2] | 0) + ($k$0121 * 24 | 0) | 0);
           $371 = HEAP8[$4 >> 0] | 0;
           $373 = ($371 & 1) == 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($tmp, $373 ? $337 : HEAP32[$336 >> 2] | 0, $373 ? ($371 & 255) >>> 1 : HEAP32[$338 >> 2] | 0) | 0;
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
           $k$0121 = $k$0121 + 1 | 0;
          } while ($k$0121 >>> 0 < $$lcssa156 >>> 0);
         }
         if ($$lcssa150 >>> 0 < $$lcssa156 >>> 0) {
          $k2$0122 = $$lcssa150;
          do {
           $382 = HEAP32[$203 >> 2] | 0;
           $383 = $382 + -24 | 0;
           $385 = $382;
           do {
            $384 = $385 + -24 | 0;
            HEAP32[$203 >> 2] = $384;
            __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($384);
            $385 = HEAP32[$203 >> 2] | 0;
           } while (($385 | 0) != ($383 | 0));
           $k2$0122 = $k2$0122 + 1 | 0;
          } while ($k2$0122 >>> 0 < $$lcssa156 >>> 0);
         }
         $389 = HEAP8[$tmp >> 0] | 0;
         $392 = HEAP32[$335 >> 2] | 0;
         if (!((($389 & 1) == 0 ? ($389 & 255) >>> 1 : $392) | 0)) $first_arg$3$off0$ph = $first_arg$0$off0$ph; else {
          $398 = HEAP32[$203 >> 2] | 0;
          if ((HEAP32[$db >> 2] | 0) == ($398 | 0)) break;
          if ($first_arg$0$off0$ph) {
           $402 = $398;
           $404 = $389;
           $411 = $392;
          } else {
           __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($398 + -24 | 0, 12716) | 0;
           $402 = HEAP32[$203 >> 2] | 0;
           $404 = HEAP8[$tmp >> 0] | 0;
           $411 = HEAP32[$335 >> 2] | 0;
          }
          $405 = ($404 & 1) == 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($402 + -24 | 0, $405 ? $340 : HEAP32[$339 >> 2] | 0, $405 ? ($404 & 255) >>> 1 : $411) | 0;
          $first_arg$3$off0$ph = 0;
         }
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);
         $first_arg$0$off0$ph = $first_arg$3$off0$ph;
         $t$1$ph = $$lcssa151;
        }
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp);
        break L11;
       } while (0);
       if (($413 | 0) != ($414 | 0)) {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($414 + -24 | 0, 41);
        if ($193 & 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12669) | 0;
        if ($193 & 2) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12676) | 0;
        if ($193 & 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12686) | 0;
        switch ($195 | 0) {
        case 1:
         {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12719) | 0;
          break;
         }
        case 2:
         {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc((HEAP32[$203 >> 2] | 0) + -24 | 0, 12722) | 0;
          break;
         }
        default:
         {}
        }
        $434 = HEAP8[$ret2 >> 0] | 0;
        $436 = ($434 & 1) == 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$203 >> 2] | 0) + -24 | 0, $436 ? $ret2 + 1 | 0 : HEAP32[$ret2 + 8 >> 2] | 0, $436 ? ($434 & 255) >>> 1 : HEAP32[$ret2 + 4 >> 2] | 0) | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2);
        HEAP8[$9 >> 0] = $199;
        $$24$ph = $t$2;
        break L6;
       }
      }
     } while (0);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($ret2);
     HEAP8[$9 >> 0] = $10;
     HEAP32[$6 >> 2] = $7;
     $$7 = $first;
     break L1;
    }
   }
  } while (0);
  HEAP8[$9 >> 0] = $10;
  HEAP32[$6 >> 2] = $7;
  $$7 = $$24$ph;
 } while (0);
 STACKTOP = sp;
 return $$7 | 0;
}

function _vfscanf($f, $fmt, $ap) {
 $f = $f | 0;
 $fmt = $fmt | 0;
 $ap = $ap | 0;
 var $$ = 0, $$lcssa = 0, $$lcssa38 = 0, $$lcssa384 = 0, $$pre = 0, $$pre$phi182Z2D = 0, $$pre170 = 0, $$pre178 = 0, $$size$0 = 0, $0 = 0, $10 = 0, $104 = 0, $105 = 0, $107 = 0, $109 = 0, $11 = 0, $112 = 0, $115 = 0, $117 = 0, $12 = 0, $125 = 0, $129 = 0, $13 = 0, $136 = 0, $14 = 0, $141 = 0, $145 = 0, $15 = 0, $150 = 0, $151 = 0, $157 = 0, $160 = 0, $164 = 0, $166 = 0, $168 = 0, $17 = 0, $173 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $181 = 0, $186 = 0, $190 = 0, $195 = 0, $196 = 0, $197 = 0, $199 = 0, $20 = 0, $201 = 0, $202 = 0, $210 = 0, $220 = 0, $222 = 0, $226 = 0, $228 = 0, $236 = 0, $244 = 0, $245 = 0, $248 = 0, $25 = 0, $250 = 0, $256 = 0, $263 = 0, $265 = 0, $271 = 0, $277 = 0, $281 = 0, $284 = 0, $291 = 0, $306 = 0, $310 = 0.0, $32 = 0, $334 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $51 = 0, $52 = 0, $62 = 0, $7 = 0, $8 = 0, $81 = 0, $82 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $alloc$0 = 0, $alloc$0400 = 0, $alloc$1 = 0, $alloc$2 = 0, $ap2$i = 0, $base$0 = 0, $c$0100 = 0, $dest$0 = 0, $i$0$i = 0, $i$0$ph = 0, $i$0$ph$phi = 0, $i$0$ph20 = 0, $i$0$ph20$lcssa = 0, $i$1 = 0, $i$2 = 0, $i$2$ph = 0, $i$2$ph$phi = 0, $i$3 = 0, $i$4 = 0, $invert$0 = 0, $isdigittmp = 0, $k$0$ph = 0, $k$1$ph = 0, $matches$0104 = 0, $matches$0104$lcssa = 0, $matches$0104376 = 0, $matches$1 = 0, $matches$2 = 0, $matches$3 = 0, $p$0109 = 0, $p$1 = 0, $p$1$lcssa = 0, $p$10 = 0, $p$11 = 0, $p$2 = 0, $p$3$lcssa = 0, $p$396 = 0, $p$4 = 0, $p$5 = 0, $p$6 = 0, $p$7 = 0, $p$7$ph = 0, $p$8 = 0, $p$9 = 0, $pos$0108 = 0, $pos$1 = 0, $pos$2 = 0, $s$0107 = 0, $s$0107$lcssa = 0, $s$1 = 0, $s$2$ph = 0, $s$3 = 0, $s$4 = 0, $s$5 = 0, $s$6 = 0, $s$7 = 0, $s$8 = 0, $scanset = 0, $size$0 = 0, $st = 0, $wc = 0, $wcs$0103 = 0, $wcs$0103$lcssa = 0, $wcs$1 = 0, $wcs$2 = 0, $wcs$3$ph = 0, $wcs$3$ph$lcssa = 0, $wcs$4 = 0, $wcs$5 = 0, $wcs$6 = 0, $wcs$7 = 0, $wcs$8 = 0, $wcs$9 = 0, $width$0$lcssa = 0, $width$097 = 0, $width$1 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 304 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ap2$i = sp + 16 | 0;
 $st = sp + 8 | 0;
 $scanset = sp + 33 | 0;
 $wc = sp;
 $0 = sp + 32 | 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) $334 = ___lockfile($f) | 0; else $334 = 0;
 $5 = HEAP8[$fmt >> 0] | 0;
 L4 : do if (!($5 << 24 >> 24)) $matches$3 = 0; else {
  $7 = $f + 4 | 0;
  $8 = $f + 100 | 0;
  $9 = $f + 108 | 0;
  $10 = $f + 8 | 0;
  $11 = $scanset + 10 | 0;
  $12 = $scanset + 33 | 0;
  $13 = $st + 4 | 0;
  $14 = $scanset + 46 | 0;
  $15 = $scanset + 94 | 0;
  $17 = $5;
  $matches$0104 = 0;
  $p$0109 = $fmt;
  $pos$0108 = 0;
  $s$0107 = 0;
  $wcs$0103 = 0;
  L6 : while (1) {
   L8 : do if (!(_isspace($17 & 255) | 0)) {
    $47 = (HEAP8[$p$0109 >> 0] | 0) == 37;
    L10 : do if ($47) {
     $48 = $p$0109 + 1 | 0;
     $49 = HEAP8[$48 >> 0] | 0;
     L12 : do switch ($49 << 24 >> 24) {
     case 37:
      {
       break L10;
       break;
      }
     case 42:
      {
       $dest$0 = 0;
       $p$2 = $p$0109 + 2 | 0;
       break;
      }
     default:
      {
       $isdigittmp = ($49 & 255) + -48 | 0;
       if ($isdigittmp >>> 0 < 10) if ((HEAP8[$p$0109 + 2 >> 0] | 0) == 36) {
        HEAP32[$ap2$i >> 2] = HEAP32[$ap >> 2];
        $i$0$i = $isdigittmp;
        while (1) {
         $81 = (HEAP32[$ap2$i >> 2] | 0) + (4 - 1) & ~(4 - 1);
         $82 = HEAP32[$81 >> 2] | 0;
         HEAP32[$ap2$i >> 2] = $81 + 4;
         if ($i$0$i >>> 0 > 1) $i$0$i = $i$0$i + -1 | 0; else {
          $$lcssa = $82;
          break;
         }
        }
        $dest$0 = $$lcssa;
        $p$2 = $p$0109 + 3 | 0;
        break L12;
       }
       $90 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
       $91 = HEAP32[$90 >> 2] | 0;
       HEAP32[$ap >> 2] = $90 + 4;
       $dest$0 = $91;
       $p$2 = $48;
      }
     } while (0);
     $92 = HEAP8[$p$2 >> 0] | 0;
     $93 = $92 & 255;
     if (($93 + -48 | 0) >>> 0 < 10) {
      $97 = $93;
      $p$396 = $p$2;
      $width$097 = 0;
      while (1) {
       $96 = ($width$097 * 10 | 0) + -48 + $97 | 0;
       $98 = $p$396 + 1 | 0;
       $99 = HEAP8[$98 >> 0] | 0;
       $97 = $99 & 255;
       if (($97 + -48 | 0) >>> 0 >= 10) {
        $$lcssa38 = $99;
        $p$3$lcssa = $98;
        $width$0$lcssa = $96;
        break;
       } else {
        $p$396 = $98;
        $width$097 = $96;
       }
      }
     } else {
      $$lcssa38 = $92;
      $p$3$lcssa = $p$2;
      $width$0$lcssa = 0;
     }
     if ($$lcssa38 << 24 >> 24 == 109) {
      $104 = $p$3$lcssa + 1 | 0;
      $107 = HEAP8[$104 >> 0] | 0;
      $alloc$0 = ($dest$0 | 0) != 0 & 1;
      $p$4 = $104;
      $s$1 = 0;
      $wcs$1 = 0;
     } else {
      $107 = $$lcssa38;
      $alloc$0 = 0;
      $p$4 = $p$3$lcssa;
      $s$1 = $s$0107;
      $wcs$1 = $wcs$0103;
     }
     $105 = $p$4 + 1 | 0;
     switch ($107 & 255 | 0) {
     case 104:
      {
       $109 = (HEAP8[$105 >> 0] | 0) == 104;
       $p$5 = $109 ? $p$4 + 2 | 0 : $105;
       $size$0 = $109 ? -2 : -1;
       break;
      }
     case 108:
      {
       $112 = (HEAP8[$105 >> 0] | 0) == 108;
       $p$5 = $112 ? $p$4 + 2 | 0 : $105;
       $size$0 = $112 ? 3 : 1;
       break;
      }
     case 106:
      {
       $p$5 = $105;
       $size$0 = 3;
       break;
      }
     case 116:
     case 122:
      {
       $p$5 = $105;
       $size$0 = 1;
       break;
      }
     case 76:
      {
       $p$5 = $105;
       $size$0 = 2;
       break;
      }
     case 110:
     case 112:
     case 67:
     case 83:
     case 91:
     case 99:
     case 115:
     case 88:
     case 71:
     case 70:
     case 69:
     case 65:
     case 103:
     case 102:
     case 101:
     case 97:
     case 120:
     case 117:
     case 111:
     case 105:
     case 100:
      {
       $p$5 = $p$4;
       $size$0 = 0;
       break;
      }
     default:
      {
       $alloc$0400 = $alloc$0;
       $matches$0104376 = $matches$0104;
       $s$6 = $s$1;
       $wcs$7 = $wcs$1;
       label = 152;
       break L6;
      }
     }
     $115 = HEAPU8[$p$5 >> 0] | 0;
     $117 = ($115 & 47 | 0) == 3;
     $$ = $117 ? $115 | 32 : $115;
     $$size$0 = $117 ? 1 : $size$0;
     switch ($$ | 0) {
     case 99:
      {
       $pos$1 = $pos$0108;
       $width$1 = ($width$0$lcssa | 0) < 1 ? 1 : $width$0$lcssa;
       break;
      }
     case 91:
      {
       $pos$1 = $pos$0108;
       $width$1 = $width$0$lcssa;
       break;
      }
     case 110:
      {
       if (!$dest$0) {
        $matches$1 = $matches$0104;
        $p$11 = $p$5;
        $pos$2 = $pos$0108;
        $s$5 = $s$1;
        $wcs$6 = $wcs$1;
        break L8;
       }
       switch ($$size$0 | 0) {
       case -2:
        {
         HEAP8[$dest$0 >> 0] = $pos$0108;
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
         break;
        }
       case -1:
        {
         HEAP16[$dest$0 >> 1] = $pos$0108;
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
         break;
        }
       case 0:
        {
         HEAP32[$dest$0 >> 2] = $pos$0108;
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
         break;
        }
       case 1:
        {
         HEAP32[$dest$0 >> 2] = $pos$0108;
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
         break;
        }
       case 3:
        {
         $125 = $dest$0;
         HEAP32[$125 >> 2] = $pos$0108;
         HEAP32[$125 + 4 >> 2] = (($pos$0108 | 0) < 0) << 31 >> 31;
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
         break;
        }
       default:
        {
         $matches$1 = $matches$0104;
         $p$11 = $p$5;
         $pos$2 = $pos$0108;
         $s$5 = $s$1;
         $wcs$6 = $wcs$1;
         break L8;
        }
       }
       break;
      }
     default:
      {
       ___shlim($f, 0);
       do {
        $129 = HEAP32[$7 >> 2] | 0;
        if ($129 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {
         HEAP32[$7 >> 2] = $129 + 1;
         $136 = HEAPU8[$129 >> 0] | 0;
        } else $136 = ___shgetc($f) | 0;
       } while ((_isspace($136) | 0) != 0);
       $$pre170 = HEAP32[$7 >> 2] | 0;
       if (!(HEAP32[$8 >> 2] | 0)) $145 = $$pre170; else {
        $141 = $$pre170 + -1 | 0;
        HEAP32[$7 >> 2] = $141;
        $145 = $141;
       }
       $pos$1 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $145 - (HEAP32[$10 >> 2] | 0) | 0;
       $width$1 = $width$0$lcssa;
      }
     }
     ___shlim($f, $width$1);
     $150 = HEAP32[$7 >> 2] | 0;
     $151 = HEAP32[$8 >> 2] | 0;
     if ($150 >>> 0 < $151 >>> 0) {
      HEAP32[$7 >> 2] = $150 + 1;
      $157 = $151;
     } else {
      if ((___shgetc($f) | 0) < 0) {
       $alloc$0400 = $alloc$0;
       $matches$0104376 = $matches$0104;
       $s$6 = $s$1;
       $wcs$7 = $wcs$1;
       label = 152;
       break L6;
      }
      $157 = HEAP32[$8 >> 2] | 0;
     }
     if ($157) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1;
     L67 : do switch ($$ | 0) {
     case 91:
     case 99:
     case 115:
      {
       $160 = ($$ | 0) == 99;
       L69 : do if (($$ & 239 | 0) == 99) {
        _memset($scanset | 0, -1, 257) | 0;
        HEAP8[$scanset >> 0] = 0;
        if (($$ | 0) == 115) {
         HEAP8[$12 >> 0] = 0;
         HEAP8[$11 >> 0] = 0;
         HEAP8[$11 + 1 >> 0] = 0;
         HEAP8[$11 + 2 >> 0] = 0;
         HEAP8[$11 + 3 >> 0] = 0;
         HEAP8[$11 + 4 >> 0] = 0;
         $p$9 = $p$5;
        } else $p$9 = $p$5;
       } else {
        $164 = $p$5 + 1 | 0;
        $166 = (HEAP8[$164 >> 0] | 0) == 94;
        $invert$0 = $166 & 1;
        $168 = $166 ? $164 : $p$5;
        $p$6 = $166 ? $p$5 + 2 | 0 : $164;
        _memset($scanset | 0, $166 & 1 | 0, 257) | 0;
        HEAP8[$scanset >> 0] = 0;
        switch (HEAP8[$p$6 >> 0] | 0) {
        case 45:
         {
          $173 = ($invert$0 ^ 1) & 255;
          HEAP8[$14 >> 0] = $173;
          $$pre$phi182Z2D = $173;
          $p$7$ph = $168 + 2 | 0;
          break;
         }
        case 93:
         {
          $176 = ($invert$0 ^ 1) & 255;
          HEAP8[$15 >> 0] = $176;
          $$pre$phi182Z2D = $176;
          $p$7$ph = $168 + 2 | 0;
          break;
         }
        default:
         {
          $$pre$phi182Z2D = ($invert$0 ^ 1) & 255;
          $p$7$ph = $p$6;
         }
        }
        $p$7 = $p$7$ph;
        while (1) {
         $177 = HEAP8[$p$7 >> 0] | 0;
         L80 : do switch ($177 << 24 >> 24) {
         case 0:
          {
           $alloc$0400 = $alloc$0;
           $matches$0104376 = $matches$0104;
           $s$6 = $s$1;
           $wcs$7 = $wcs$1;
           label = 152;
           break L6;
           break;
          }
         case 93:
          {
           $p$9 = $p$7;
           break L69;
           break;
          }
         case 45:
          {
           $178 = $p$7 + 1 | 0;
           $179 = HEAP8[$178 >> 0] | 0;
           switch ($179 << 24 >> 24) {
           case 93:
           case 0:
            {
             $190 = 45;
             $p$8 = $p$7;
             break L80;
             break;
            }
           default:
            {}
           }
           $181 = HEAP8[$p$7 + -1 >> 0] | 0;
           if (($181 & 255) < ($179 & 255)) {
            $c$0100 = $181 & 255;
            do {
             $c$0100 = $c$0100 + 1 | 0;
             HEAP8[$scanset + $c$0100 >> 0] = $$pre$phi182Z2D;
             $186 = HEAP8[$178 >> 0] | 0;
            } while (($c$0100 | 0) < ($186 & 255 | 0));
            $190 = $186;
            $p$8 = $178;
           } else {
            $190 = $179;
            $p$8 = $178;
           }
           break;
          }
         default:
          {
           $190 = $177;
           $p$8 = $p$7;
          }
         } while (0);
         HEAP8[$scanset + (($190 & 255) + 1) >> 0] = $$pre$phi182Z2D;
         $p$7 = $p$8 + 1 | 0;
        }
       } while (0);
       $195 = $160 ? $width$1 + 1 | 0 : 31;
       $196 = ($$size$0 | 0) == 1;
       $197 = ($alloc$0 | 0) != 0;
       L88 : do if ($196) {
        if ($197) {
         $199 = _malloc($195 << 2) | 0;
         if (!$199) {
          $alloc$0400 = $alloc$0;
          $matches$0104376 = $matches$0104;
          $s$6 = 0;
          $wcs$7 = $199;
          label = 152;
          break L6;
         } else $wcs$2 = $199;
        } else $wcs$2 = $dest$0;
        HEAP32[$st >> 2] = 0;
        HEAP32[$13 >> 2] = 0;
        $i$0$ph = 0;
        $k$0$ph = $195;
        $wcs$3$ph = $wcs$2;
        L94 : while (1) {
         $201 = ($wcs$3$ph | 0) == 0;
         $i$0$ph20 = $i$0$ph;
         while (1) {
          L98 : while (1) {
           $202 = HEAP32[$7 >> 2] | 0;
           if ($202 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {
            HEAP32[$7 >> 2] = $202 + 1;
            $210 = HEAPU8[$202 >> 0] | 0;
           } else $210 = ___shgetc($f) | 0;
           if (!(HEAP8[$scanset + ($210 + 1) >> 0] | 0)) {
            $i$0$ph20$lcssa = $i$0$ph20;
            $wcs$3$ph$lcssa = $wcs$3$ph;
            break L94;
           }
           HEAP8[$0 >> 0] = $210;
           switch (_mbrtowc($wc, $0, 1, $st) | 0) {
           case -1:
            {
             $alloc$0400 = $alloc$0;
             $matches$0104376 = $matches$0104;
             $s$6 = 0;
             $wcs$7 = $wcs$3$ph;
             label = 152;
             break L6;
             break;
            }
           case -2:
            break;
           default:
            break L98;
           }
          }
          if ($201) $i$1 = $i$0$ph20; else {
           HEAP32[$wcs$3$ph + ($i$0$ph20 << 2) >> 2] = HEAP32[$wc >> 2];
           $i$1 = $i$0$ph20 + 1 | 0;
          }
          if ($197 & ($i$1 | 0) == ($k$0$ph | 0)) break; else $i$0$ph20 = $i$1;
         }
         $220 = $k$0$ph << 1 | 1;
         $222 = _realloc($wcs$3$ph, $220 << 2) | 0;
         if (!$222) {
          $alloc$0400 = $alloc$0;
          $matches$0104376 = $matches$0104;
          $s$6 = 0;
          $wcs$7 = $wcs$3$ph;
          label = 152;
          break L6;
         }
         $i$0$ph$phi = $k$0$ph;
         $k$0$ph = $220;
         $wcs$3$ph = $222;
         $i$0$ph = $i$0$ph$phi;
        }
        if (!(_mbsinit($st) | 0)) {
         $alloc$0400 = $alloc$0;
         $matches$0104376 = $matches$0104;
         $s$6 = 0;
         $wcs$7 = $wcs$3$ph$lcssa;
         label = 152;
         break L6;
        } else {
         $i$4 = $i$0$ph20$lcssa;
         $s$3 = 0;
         $wcs$4 = $wcs$3$ph$lcssa;
        }
       } else {
        if ($197) {
         $226 = _malloc($195) | 0;
         if (!$226) {
          $alloc$0400 = $alloc$0;
          $matches$0104376 = $matches$0104;
          $s$6 = 0;
          $wcs$7 = 0;
          label = 152;
          break L6;
         } else {
          $i$2$ph = 0;
          $k$1$ph = $195;
          $s$2$ph = $226;
         }
         while (1) {
          $i$2 = $i$2$ph;
          do {
           $228 = HEAP32[$7 >> 2] | 0;
           if ($228 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {
            HEAP32[$7 >> 2] = $228 + 1;
            $236 = HEAPU8[$228 >> 0] | 0;
           } else $236 = ___shgetc($f) | 0;
           if (!(HEAP8[$scanset + ($236 + 1) >> 0] | 0)) {
            $i$4 = $i$2;
            $s$3 = $s$2$ph;
            $wcs$4 = 0;
            break L88;
           }
           HEAP8[$s$2$ph + $i$2 >> 0] = $236;
           $i$2 = $i$2 + 1 | 0;
          } while (($i$2 | 0) != ($k$1$ph | 0));
          $244 = $k$1$ph << 1 | 1;
          $245 = _realloc($s$2$ph, $244) | 0;
          if (!$245) {
           $alloc$0400 = $alloc$0;
           $matches$0104376 = $matches$0104;
           $s$6 = $s$2$ph;
           $wcs$7 = 0;
           label = 152;
           break L6;
          } else {
           $i$2$ph$phi = $k$1$ph;
           $k$1$ph = $244;
           $s$2$ph = $245;
           $i$2$ph = $i$2$ph$phi;
          }
         }
        }
        if (!$dest$0) {
         $265 = $157;
         while (1) {
          $263 = HEAP32[$7 >> 2] | 0;
          if ($263 >>> 0 < $265 >>> 0) {
           HEAP32[$7 >> 2] = $263 + 1;
           $271 = HEAPU8[$263 >> 0] | 0;
          } else $271 = ___shgetc($f) | 0;
          if (!(HEAP8[$scanset + ($271 + 1) >> 0] | 0)) {
           $i$4 = 0;
           $s$3 = 0;
           $wcs$4 = 0;
           break L88;
          }
          $265 = HEAP32[$8 >> 2] | 0;
         }
        } else {
         $250 = $157;
         $i$3 = 0;
         while (1) {
          $248 = HEAP32[$7 >> 2] | 0;
          if ($248 >>> 0 < $250 >>> 0) {
           HEAP32[$7 >> 2] = $248 + 1;
           $256 = HEAPU8[$248 >> 0] | 0;
          } else $256 = ___shgetc($f) | 0;
          if (!(HEAP8[$scanset + ($256 + 1) >> 0] | 0)) {
           $i$4 = $i$3;
           $s$3 = $dest$0;
           $wcs$4 = 0;
           break L88;
          }
          HEAP8[$dest$0 + $i$3 >> 0] = $256;
          $250 = HEAP32[$8 >> 2] | 0;
          $i$3 = $i$3 + 1 | 0;
         }
        }
       } while (0);
       $$pre178 = HEAP32[$7 >> 2] | 0;
       if (!(HEAP32[$8 >> 2] | 0)) $281 = $$pre178; else {
        $277 = $$pre178 + -1 | 0;
        HEAP32[$7 >> 2] = $277;
        $281 = $277;
       }
       $284 = $281 - (HEAP32[$10 >> 2] | 0) + (HEAP32[$9 >> 2] | 0) | 0;
       if (!$284) {
        $alloc$2 = $alloc$0;
        $matches$2 = $matches$0104;
        $s$8 = $s$3;
        $wcs$9 = $wcs$4;
        break L6;
       }
       if (!(($284 | 0) == ($width$1 | 0) | $160 ^ 1)) {
        $alloc$2 = $alloc$0;
        $matches$2 = $matches$0104;
        $s$8 = $s$3;
        $wcs$9 = $wcs$4;
        break L6;
       }
       do if ($197) if ($196) {
        HEAP32[$dest$0 >> 2] = $wcs$4;
        break;
       } else {
        HEAP32[$dest$0 >> 2] = $s$3;
        break;
       } while (0);
       if ($160) {
        $p$10 = $p$9;
        $s$4 = $s$3;
        $wcs$5 = $wcs$4;
       } else {
        if ($wcs$4) HEAP32[$wcs$4 + ($i$4 << 2) >> 2] = 0;
        if (!$s$3) {
         $p$10 = $p$9;
         $s$4 = 0;
         $wcs$5 = $wcs$4;
         break L67;
        }
        HEAP8[$s$3 + $i$4 >> 0] = 0;
        $p$10 = $p$9;
        $s$4 = $s$3;
        $wcs$5 = $wcs$4;
       }
       break;
      }
     case 120:
     case 88:
     case 112:
      {
       $base$0 = 16;
       label = 134;
       break;
      }
     case 111:
      {
       $base$0 = 8;
       label = 134;
       break;
      }
     case 117:
     case 100:
      {
       $base$0 = 10;
       label = 134;
       break;
      }
     case 105:
      {
       $base$0 = 0;
       label = 134;
       break;
      }
     case 71:
     case 103:
     case 70:
     case 102:
     case 69:
     case 101:
     case 65:
     case 97:
      {
       $310 = +___floatscan($f, $$size$0, 0);
       if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) {
        $alloc$2 = $alloc$0;
        $matches$2 = $matches$0104;
        $s$8 = $s$1;
        $wcs$9 = $wcs$1;
        break L6;
       }
       if (!$dest$0) {
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
       } else switch ($$size$0 | 0) {
       case 0:
        {
         HEAPF32[$dest$0 >> 2] = $310;
         $p$10 = $p$5;
         $s$4 = $s$1;
         $wcs$5 = $wcs$1;
         break L67;
         break;
        }
       case 1:
        {
         HEAPF64[$dest$0 >> 3] = $310;
         $p$10 = $p$5;
         $s$4 = $s$1;
         $wcs$5 = $wcs$1;
         break L67;
         break;
        }
       case 2:
        {
         HEAPF64[$dest$0 >> 3] = $310;
         $p$10 = $p$5;
         $s$4 = $s$1;
         $wcs$5 = $wcs$1;
         break L67;
         break;
        }
       default:
        {
         $p$10 = $p$5;
         $s$4 = $s$1;
         $wcs$5 = $wcs$1;
         break L67;
        }
       }
       break;
      }
     default:
      {
       $p$10 = $p$5;
       $s$4 = $s$1;
       $wcs$5 = $wcs$1;
      }
     } while (0);
     L168 : do if ((label | 0) == 134) {
      label = 0;
      $291 = ___intscan($f, $base$0, 0, -1, -1) | 0;
      if ((HEAP32[$9 >> 2] | 0) == ((HEAP32[$10 >> 2] | 0) - (HEAP32[$7 >> 2] | 0) | 0)) {
       $alloc$2 = $alloc$0;
       $matches$2 = $matches$0104;
       $s$8 = $s$1;
       $wcs$9 = $wcs$1;
       break L6;
      }
      if (($dest$0 | 0) != 0 & ($$ | 0) == 112) {
       HEAP32[$dest$0 >> 2] = $291;
       $p$10 = $p$5;
       $s$4 = $s$1;
       $wcs$5 = $wcs$1;
       break;
      }
      if (!$dest$0) {
       $p$10 = $p$5;
       $s$4 = $s$1;
       $wcs$5 = $wcs$1;
      } else switch ($$size$0 | 0) {
      case -2:
       {
        HEAP8[$dest$0 >> 0] = $291;
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
        break;
       }
      case -1:
       {
        HEAP16[$dest$0 >> 1] = $291;
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
        break;
       }
      case 0:
       {
        HEAP32[$dest$0 >> 2] = $291;
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
        break;
       }
      case 1:
       {
        HEAP32[$dest$0 >> 2] = $291;
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
        break;
       }
      case 3:
       {
        $306 = $dest$0;
        HEAP32[$306 >> 2] = $291;
        HEAP32[$306 + 4 >> 2] = tempRet0;
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
        break;
       }
      default:
       {
        $p$10 = $p$5;
        $s$4 = $s$1;
        $wcs$5 = $wcs$1;
        break L168;
       }
      }
     } while (0);
     $matches$1 = (($dest$0 | 0) != 0 & 1) + $matches$0104 | 0;
     $p$11 = $p$10;
     $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$1 + (HEAP32[$7 >> 2] | 0) - (HEAP32[$10 >> 2] | 0) | 0;
     $s$5 = $s$4;
     $wcs$6 = $wcs$5;
     break L8;
    } while (0);
    $51 = $p$0109 + ($47 & 1) | 0;
    ___shlim($f, 0);
    $52 = HEAP32[$7 >> 2] | 0;
    if ($52 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {
     HEAP32[$7 >> 2] = $52 + 1;
     $62 = HEAPU8[$52 >> 0] | 0;
    } else $62 = ___shgetc($f) | 0;
    if (($62 | 0) != (HEAPU8[$51 >> 0] | 0)) {
     $$lcssa384 = $62;
     $matches$0104$lcssa = $matches$0104;
     $s$0107$lcssa = $s$0107;
     $wcs$0103$lcssa = $wcs$0103;
     label = 21;
     break L6;
    }
    $matches$1 = $matches$0104;
    $p$11 = $51;
    $pos$2 = $pos$0108 + 1 | 0;
    $s$5 = $s$0107;
    $wcs$6 = $wcs$0103;
   } else {
    $p$1 = $p$0109;
    while (1) {
     $20 = $p$1 + 1 | 0;
     if (!(_isspace(HEAPU8[$20 >> 0] | 0) | 0)) {
      $p$1$lcssa = $p$1;
      break;
     } else $p$1 = $20;
    }
    ___shlim($f, 0);
    do {
     $25 = HEAP32[$7 >> 2] | 0;
     if ($25 >>> 0 < (HEAP32[$8 >> 2] | 0) >>> 0) {
      HEAP32[$7 >> 2] = $25 + 1;
      $32 = HEAPU8[$25 >> 0] | 0;
     } else $32 = ___shgetc($f) | 0;
    } while ((_isspace($32) | 0) != 0);
    $$pre = HEAP32[$7 >> 2] | 0;
    if (!(HEAP32[$8 >> 2] | 0)) $41 = $$pre; else {
     $37 = $$pre + -1 | 0;
     HEAP32[$7 >> 2] = $37;
     $41 = $37;
    }
    $matches$1 = $matches$0104;
    $p$11 = $p$1$lcssa;
    $pos$2 = (HEAP32[$9 >> 2] | 0) + $pos$0108 + $41 - (HEAP32[$10 >> 2] | 0) | 0;
    $s$5 = $s$0107;
    $wcs$6 = $wcs$0103;
   } while (0);
   $p$0109 = $p$11 + 1 | 0;
   $17 = HEAP8[$p$0109 >> 0] | 0;
   if (!($17 << 24 >> 24)) {
    $matches$3 = $matches$1;
    break L4;
   } else {
    $matches$0104 = $matches$1;
    $pos$0108 = $pos$2;
    $s$0107 = $s$5;
    $wcs$0103 = $wcs$6;
   }
  }
  if ((label | 0) == 21) {
   if (HEAP32[$8 >> 2] | 0) HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + -1;
   if (($matches$0104$lcssa | 0) != 0 | ($$lcssa384 | 0) > -1) {
    $matches$3 = $matches$0104$lcssa;
    break;
   } else {
    $alloc$1 = 0;
    $s$7 = $s$0107$lcssa;
    $wcs$8 = $wcs$0103$lcssa;
    label = 153;
   }
  } else if ((label | 0) == 152) if (!$matches$0104376) {
   $alloc$1 = $alloc$0400;
   $s$7 = $s$6;
   $wcs$8 = $wcs$7;
   label = 153;
  } else {
   $alloc$2 = $alloc$0400;
   $matches$2 = $matches$0104376;
   $s$8 = $s$6;
   $wcs$9 = $wcs$7;
  }
  if ((label | 0) == 153) {
   $alloc$2 = $alloc$1;
   $matches$2 = -1;
   $s$8 = $s$7;
   $wcs$9 = $wcs$8;
  }
  if (!$alloc$2) $matches$3 = $matches$2; else {
   _free($s$8);
   _free($wcs$9);
   $matches$3 = $matches$2;
  }
 } while (0);
 if ($334) ___unlockfile($f);
 STACKTOP = sp;
 return $matches$3 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i$i = 0, $$0$i$i$i$i6 = 0, $$0$i$i$i18$i = 0, $$0$i$i$i7$i = 0, $$0$i$i49 = 0, $$03$i = 0, $$1$i9 = 0, $$lcssa = 0, $$ph26 = 0, $$pre$i$i$i$i = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $121 = 0, $13 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $140 = 0, $141 = 0, $143 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $157 = 0, $159 = 0, $162 = 0, $163 = 0, $165 = 0, $171 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $191 = 0, $193 = 0, $194 = 0, $196 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $204 = 0, $205 = 0, $207 = 0, $217 = 0, $218 = 0, $22 = 0, $220 = 0, $224 = 0, $227 = 0, $230 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $248 = 0, $252 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $268 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $277 = 0, $283 = 0, $284 = 0, $285 = 0, $29 = 0, $292 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $304 = 0, $31 = 0, $312 = 0, $318 = 0, $32 = 0, $335 = 0, $336 = 0, $337 = 0, $338 = 0, $341 = 0, $36 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $50 = 0, $53 = 0, $55 = 0, $6 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $69 = 0, $7 = 0, $71 = 0, $74 = 0, $75 = 0, $87 = 0, $88 = 0, $90 = 0, $97 = 0, $98 = 0, $99 = 0, $__p$0$i$i = 0, $__p$1$i$i48 = 0, $__v$i$i17$i = 0, $phitmp$i$i$i$i$i$i$i = 0, $phitmp$i2$i$i$i$i$i$i = 0, $t0$0$i = 0, $t01$0$i = 0, $t01$0$i$lcssa67 = 0, $t01$1$i = 0, $t01$2$i = 0, $t1$0$i$lcssa = 0, $t1$0$i45 = 0, $t13$0$i$lcssa = 0, $t13$0$i51 = 0, $tmp$i = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i17$i = sp + 104 | 0;
 $0 = sp + 80 | 0;
 $1 = sp + 64 | 0;
 $2 = sp + 40 | 0;
 $3 = sp + 24 | 0;
 $tmp$i = sp + 12 | 0;
 $4 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {
  $6 = HEAP8[$first >> 0] | 0;
  $7 = $6 << 24 >> 24;
  switch ($7 | 0) {
  case 68:
  case 67:
   {
    L6 : do if (($last - $first | 0) > 1) {
     $13 = $db + 4 | 0;
     $14 = HEAP32[$13 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($14 | 0)) $$03$i = $first; else switch ($7 | 0) {
     case 67:
      {
       switch (HEAP8[$first + 1 >> 0] | 0) {
       case 53:
       case 51:
       case 50:
       case 49:
        break;
       default:
        {
         $$03$i = $first;
         break L6;
        }
       }
       __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($1, $14 + -24 | 0);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
       $20 = HEAP32[$13 >> 2] | 0;
       $22 = HEAP32[$db + 8 >> 2] | 0;
       if ($20 >>> 0 < $22 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($20, $0);
        HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24;
       } else {
        $29 = HEAP32[$db >> 2] | 0;
        $30 = $20 - $29 | 0;
        $31 = ($30 | 0) / 24 | 0;
        $32 = $31 + 1 | 0;
        if (($30 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $36 = ($22 - $29 | 0) / 24 | 0;
        if ($36 >>> 0 < 1073741823) {
         $38 = $36 << 1;
         $$0$i$i$i$i = $38 >>> 0 < $32 >>> 0 ? $32 : $38;
        } else $$0$i$i$i$i = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i, $31, $db + 12 | 0);
        $41 = $__v$i$i17$i + 8 | 0;
        $42 = HEAP32[$41 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $0);
        HEAP32[$41 >> 2] = $42 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
       HEAP8[$db + 60 >> 0] = 1;
       $$03$i = $first + 2 | 0;
       break L6;
       break;
      }
     case 68:
      {
       switch (HEAP8[$first + 1 >> 0] | 0) {
       case 53:
       case 50:
       case 49:
       case 48:
        break;
       default:
        {
         $$03$i = $first;
         break L6;
        }
       }
       __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($tmp$i, $14 + -24 | 0);
       $50 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($tmp$i, 0, 12928) | 0;
       HEAP32[$3 >> 2] = HEAP32[$50 >> 2];
       HEAP32[$3 + 4 >> 2] = HEAP32[$50 + 4 >> 2];
       HEAP32[$3 + 8 >> 2] = HEAP32[$50 + 8 >> 2];
       HEAP32[$50 >> 2] = 0;
       HEAP32[$50 + 4 >> 2] = 0;
       HEAP32[$50 + 8 >> 2] = 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);
       $53 = HEAP32[$13 >> 2] | 0;
       $55 = HEAP32[$db + 8 >> 2] | 0;
       if ($53 >>> 0 < $55 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($53, $2);
        HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 24;
       } else {
        $62 = HEAP32[$db >> 2] | 0;
        $63 = $53 - $62 | 0;
        $64 = ($63 | 0) / 24 | 0;
        $65 = $64 + 1 | 0;
        if (($63 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $69 = ($55 - $62 | 0) / 24 | 0;
        if ($69 >>> 0 < 1073741823) {
         $71 = $69 << 1;
         $$0$i$i$i7$i = $71 >>> 0 < $65 >>> 0 ? $65 : $71;
        } else $$0$i$i$i7$i = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i7$i, $64, $db + 12 | 0);
        $74 = $__v$i$i17$i + 8 | 0;
        $75 = HEAP32[$74 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($75, $2);
        HEAP32[$74 >> 2] = $75 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);
       HEAP8[$db + 60 >> 0] = 1;
       $$03$i = $first + 2 | 0;
       break L6;
       break;
      }
     default:
      {
       $$03$i = $first;
       break L6;
      }
     }
    } else $$03$i = $first; while (0);
    $$0 = $$03$i;
    break L1;
    break;
   }
  case 85:
   {
    L36 : do if (($last - $first | 0) > 2 & $6 << 24 >> 24 == 85) {
     switch (HEAP8[$first + 1 >> 0] | 0) {
     case 116:
      {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($1, 12930, 8);
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
       $87 = $db + 4 | 0;
       $88 = HEAP32[$87 >> 2] | 0;
       $90 = HEAP32[$db + 8 >> 2] | 0;
       if ($88 >>> 0 < $90 >>> 0) {
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($88, $0);
        HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 24;
       } else {
        $97 = HEAP32[$db >> 2] | 0;
        $98 = $88 - $97 | 0;
        $99 = ($98 | 0) / 24 | 0;
        $100 = $99 + 1 | 0;
        if (($98 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
        $104 = ($90 - $97 | 0) / 24 | 0;
        if ($104 >>> 0 < 1073741823) {
         $106 = $104 << 1;
         $$0$i$i$i$i6 = $106 >>> 0 < $100 >>> 0 ? $100 : $106;
        } else $$0$i$i$i$i6 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i$i6, $99, $db + 12 | 0);
        $109 = $__v$i$i17$i + 8 | 0;
        $110 = HEAP32[$109 >> 2] | 0;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($110, $0);
        HEAP32[$109 >> 2] = $110 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
       $112 = $first + 2 | 0;
       if (($112 | 0) == ($last | 0)) {
        $114 = HEAP32[$87 >> 2] | 0;
        $115 = $114 + -24 | 0;
        $117 = $114;
        while (1) {
         $116 = $117 + -24 | 0;
         HEAP32[$87 >> 2] = $116;
         __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($116);
         $117 = HEAP32[$87 >> 2] | 0;
         if (($117 | 0) == ($115 | 0)) {
          $$1$i9 = $first;
          break L36;
         }
        }
       }
       if (((HEAP8[$112 >> 0] | 0) + -48 | 0) >>> 0 < 10) {
        $121 = $first + 3 | 0;
        L57 : do if (($121 | 0) == ($last | 0)) $t1$0$i$lcssa = $last; else {
         $t1$0$i45 = $121;
         while (1) {
          if (((HEAP8[$t1$0$i45 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
           $t1$0$i$lcssa = $t1$0$i45;
           break L57;
          }
          $t1$0$i45 = $t1$0$i45 + 1 | 0;
          if (($t1$0$i45 | 0) == ($last | 0)) {
           $t1$0$i$lcssa = $last;
           break;
          }
         }
        } while (0);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$87 >> 2] | 0) + -24 | 0, $112, $t1$0$i$lcssa);
        $t0$0$i = $t1$0$i$lcssa;
       } else $t0$0$i = $112;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$87 >> 2] | 0) + -24 | 0, 39);
       if (($t0$0$i | 0) != ($last | 0)) if ((HEAP8[$t0$0$i >> 0] | 0) == 95) {
        $$1$i9 = $t0$0$i + 1 | 0;
        break L36;
       }
       $134 = HEAP32[$87 >> 2] | 0;
       $135 = $134 + -24 | 0;
       $137 = $134;
       while (1) {
        $136 = $137 + -24 | 0;
        HEAP32[$87 >> 2] = $136;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($136);
        $137 = HEAP32[$87 >> 2] | 0;
        if (($137 | 0) == ($135 | 0)) {
         $$1$i9 = $first;
         break L36;
        }
       }
       break;
      }
     case 108:
      break;
     default:
      {
       $$1$i9 = $first;
       break L36;
      }
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($3, 12939, 9);
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);
     $140 = $db + 4 | 0;
     $141 = HEAP32[$140 >> 2] | 0;
     $143 = HEAP32[$db + 8 >> 2] | 0;
     if ($141 >>> 0 < $143 >>> 0) {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($141, $2);
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 24;
     } else {
      $150 = HEAP32[$db >> 2] | 0;
      $151 = $141 - $150 | 0;
      $152 = ($151 | 0) / 24 | 0;
      $153 = $152 + 1 | 0;
      if (($151 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
      $157 = ($143 - $150 | 0) / 24 | 0;
      if ($157 >>> 0 < 1073741823) {
       $159 = $157 << 1;
       $$0$i$i$i18$i = $159 >>> 0 < $153 >>> 0 ? $153 : $159;
      } else $$0$i$i$i18$i = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17$i, $$0$i$i$i18$i, $152, $db + 12 | 0);
      $162 = $__v$i$i17$i + 8 | 0;
      $163 = HEAP32[$162 >> 2] | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($163, $2);
      HEAP32[$162 >> 2] = $163 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17$i);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17$i);
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
     $165 = $first + 2 | 0;
     do if ((HEAP8[$165 >> 0] | 0) == 118) {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$140 >> 2] | 0) + -24 | 0, 41);
      $t01$1$i = $first + 3 | 0;
     } else {
      $171 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($165, $last, $db) | 0;
      $173 = HEAP32[$140 >> 2] | 0;
      if (($171 | 0) == ($165 | 0)) {
       $174 = $173 + -24 | 0;
       $176 = $173;
       while (1) {
        $175 = $176 + -24 | 0;
        HEAP32[$140 >> 2] = $175;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($175);
        $176 = HEAP32[$140 >> 2] | 0;
        if (($176 | 0) == ($174 | 0)) {
         $$1$i9 = $first;
         break L36;
        }
       }
      }
      if ((($173 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       $$1$i9 = $first;
       break L36;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($tmp$i, $173 + -24 | 0);
      $185 = HEAP32[$140 >> 2] | 0;
      $186 = $185 + -24 | 0;
      $188 = $185;
      do {
       $187 = $188 + -24 | 0;
       HEAP32[$140 >> 2] = $187;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187);
       $188 = HEAP32[$140 >> 2] | 0;
      } while (($188 | 0) != ($186 | 0));
      $191 = HEAP8[$tmp$i >> 0] | 0;
      $193 = ($191 & 1) == 0;
      $194 = $tmp$i + 8 | 0;
      $196 = $tmp$i + 1 | 0;
      $198 = $tmp$i + 4 | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($185 + -48 | 0, $193 ? $196 : HEAP32[$194 >> 2] | 0, $193 ? ($191 & 255) >>> 1 : HEAP32[$198 >> 2] | 0) | 0;
      $203 = $4 + 4 | 0;
      $204 = $4 + 8 | 0;
      $$pre$i$i$i$i = $191;
      $t01$0$i = $171;
      while (1) {
       $205 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($t01$0$i, $last, $db) | 0;
       $207 = HEAP32[$140 >> 2] | 0;
       if (($205 | 0) == ($t01$0$i | 0)) {
        $$lcssa = $207;
        $t01$0$i$lcssa67 = $t01$0$i;
        label = 79;
        break;
       }
       if ((($207 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
        label = 113;
        break;
       }
       __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($4, $207 + -24 | 0);
       L96 : do if (!($$pre$i$i$i$i & 1)) {
        HEAP8[$196 >> 0] = 0;
        HEAP8[$tmp$i >> 0] = 0;
       } else {
        $217 = HEAP32[$194 >> 2] | 0;
        HEAP8[$217 >> 0] = 0;
        HEAP32[$198 >> 2] = 0;
        $218 = HEAP32[$tmp$i >> 2] | 0;
        $phitmp$i$i$i$i$i$i$i = ($218 & -2) + -1 | 0;
        $220 = $218 & 255;
        do if (!($220 & 1)) {
         $224 = $218 >>> 1 & 127;
         if (($220 & 255) < 22) {
          _memcpy($196 | 0, $217 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0;
          _free($217);
          $$ph26 = $224;
          break;
         }
         $227 = $224 + 16 & 240;
         $phitmp$i2$i$i$i$i$i$i = $227 + -1 | 0;
         if (($phitmp$i2$i$i$i$i$i$i | 0) == ($phitmp$i$i$i$i$i$i$i | 0)) break L96;
         $230 = _malloc($227) | 0;
         if ($phitmp$i2$i$i$i$i$i$i >>> 0 <= $phitmp$i$i$i$i$i$i$i >>> 0 & ($230 | 0) == 0) break L96;
         _memcpy($230 | 0, $196 | 0, ($218 >>> 1 & 127) + 1 | 0) | 0;
         HEAP32[$tmp$i >> 2] = $227 | 1;
         HEAP32[$198 >> 2] = $224;
         HEAP32[$194 >> 2] = $230;
         break L96;
        } else {
         HEAP8[$196 >> 0] = 0;
         _free($217);
         $$ph26 = 0;
        } while (0);
        HEAP8[$tmp$i >> 0] = $$ph26 << 1;
       } while (0);
       HEAP32[$tmp$i >> 2] = HEAP32[$4 >> 2];
       HEAP32[$tmp$i + 4 >> 2] = HEAP32[$4 + 4 >> 2];
       HEAP32[$tmp$i + 8 >> 2] = HEAP32[$4 + 8 >> 2];
       HEAP32[$4 >> 2] = 0;
       HEAP32[$203 >> 2] = 0;
       HEAP32[$204 >> 2] = 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
       $241 = HEAP32[$140 >> 2] | 0;
       $242 = $241 + -24 | 0;
       $244 = $241;
       do {
        $243 = $244 + -24 | 0;
        HEAP32[$140 >> 2] = $243;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243);
        $244 = HEAP32[$140 >> 2] | 0;
       } while (($244 | 0) != ($242 | 0));
       $246 = HEAP8[$tmp$i >> 0] | 0;
       $248 = ($246 & 1) == 0;
       $252 = $248 ? ($246 & 255) >>> 1 : HEAP32[$198 >> 2] | 0;
       if (!$252) {
        $$pre$i$i$i$i = $246;
        $t01$0$i = $205;
        continue;
       }
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($241 + -48 | 0, 12716) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$140 >> 2] | 0) + -24 | 0, $248 ? $196 : HEAP32[$194 >> 2] | 0, $252) | 0;
       $$pre$i$i$i$i = $246;
       $t01$0$i = $205;
      }
      if ((label | 0) == 79) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($$lcssa + -24 | 0, 12619) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);
       $t01$1$i = $t01$0$i$lcssa67;
       break;
      } else if ((label | 0) == 113) {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($tmp$i);
       $$1$i9 = $first;
       break L36;
      }
     } while (0);
     if (($t01$1$i | 0) != ($last | 0)) if ((HEAP8[$t01$1$i >> 0] | 0) == 69) {
      $268 = $t01$1$i + 1 | 0;
      if (($268 | 0) == ($last | 0)) {
       $270 = HEAP32[$140 >> 2] | 0;
       $271 = $270 + -24 | 0;
       $273 = $270;
       while (1) {
        $272 = $273 + -24 | 0;
        HEAP32[$140 >> 2] = $272;
        __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($272);
        $273 = HEAP32[$140 >> 2] | 0;
        if (($273 | 0) == ($271 | 0)) {
         $$1$i9 = $first;
         break L36;
        }
       }
      }
      if (((HEAP8[$268 >> 0] | 0) + -48 | 0) >>> 0 < 10) {
       $277 = $t01$1$i + 2 | 0;
       L127 : do if (($277 | 0) == ($last | 0)) $t13$0$i$lcssa = $last; else {
        $t13$0$i51 = $277;
        while (1) {
         if (((HEAP8[$t13$0$i51 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
          $t13$0$i$lcssa = $t13$0$i51;
          break L127;
         }
         $t13$0$i51 = $t13$0$i51 + 1 | 0;
         if (($t13$0$i51 | 0) == ($last | 0)) {
          $t13$0$i$lcssa = $last;
          break;
         }
        }
       } while (0);
       $283 = HEAP32[$140 >> 2] | 0;
       $284 = $283 + -24 | 0;
       $285 = HEAP8[$284 >> 0] | 0;
       if (!($285 & 1)) {
        $300 = 10;
        $301 = ($285 & 255) >>> 1;
        $304 = $285;
       } else {
        $292 = HEAP32[$284 >> 2] | 0;
        $300 = ($292 & -2) + -1 | 0;
        $301 = HEAP32[$283 + -20 >> 2] | 0;
        $304 = $292 & 255;
       }
       $297 = $t13$0$i$lcssa - $268 | 0;
       if (($t13$0$i$lcssa | 0) == ($268 | 0)) $t01$2$i = $268; else {
        if (($300 - $301 | 0) >>> 0 < $297 >>> 0) {
         __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($284, $300, $301 + $297 - $300 | 0, $301, 7, $297);
         $__p$0$i$i = HEAP32[$283 + -16 >> 2] | 0;
        } else {
         if (!($304 & 1)) $312 = $284 + 1 | 0; else $312 = HEAP32[$283 + -16 >> 2] | 0;
         if (($301 | 0) == 7) $__p$0$i$i = $312; else {
          _memmove($312 + ($297 + 7) | 0, $312 + 7 | 0, $301 + -7 | 0) | 0;
          $__p$0$i$i = $312;
         }
        }
        $318 = $301 + $297 | 0;
        if (!(HEAP8[$284 >> 0] & 1)) HEAP8[$284 >> 0] = $318 << 1; else HEAP32[$283 + -20 >> 2] = $318;
        HEAP8[$__p$0$i$i + $318 >> 0] = 0;
        if (($268 | 0) == ($t13$0$i$lcssa | 0)) $t01$2$i = $t13$0$i$lcssa; else {
         $$0$i$i49 = $268;
         $__p$1$i$i48 = $__p$0$i$i + 7 | 0;
         while (1) {
          HEAP8[$__p$1$i$i48 >> 0] = HEAP8[$$0$i$i49 >> 0] | 0;
          $$0$i$i49 = $$0$i$i49 + 1 | 0;
          if (($$0$i$i49 | 0) == ($t13$0$i$lcssa | 0)) {
           $t01$2$i = $t13$0$i$lcssa;
           break;
          } else $__p$1$i$i48 = $__p$1$i$i48 + 1 | 0;
         }
        }
       }
      } else $t01$2$i = $268;
      if (($t01$2$i | 0) != ($last | 0)) if ((HEAP8[$t01$2$i >> 0] | 0) == 95) {
       $$1$i9 = $t01$2$i + 1 | 0;
       break;
      }
      $335 = HEAP32[$140 >> 2] | 0;
      $336 = $335 + -24 | 0;
      $338 = $335;
      while (1) {
       $337 = $338 + -24 | 0;
       HEAP32[$140 >> 2] = $337;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($337);
       $338 = HEAP32[$140 >> 2] | 0;
       if (($338 | 0) == ($336 | 0)) {
        $$1$i9 = $first;
        break L36;
       }
      }
     }
     $263 = HEAP32[$140 >> 2] | 0;
     $264 = $263 + -24 | 0;
     $266 = $263;
     do {
      $265 = $266 + -24 | 0;
      HEAP32[$140 >> 2] = $265;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($265);
      $266 = HEAP32[$140 >> 2] | 0;
     } while (($266 | 0) != ($264 | 0));
     $$1$i9 = $first;
    } else $$1$i9 = $first; while (0);
    $$0 = $$1$i9;
    break L1;
    break;
   }
  case 57:
  case 56:
  case 55:
  case 54:
  case 53:
  case 52:
  case 51:
  case 50:
  case 49:
   {
    $341 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    STACKTOP = sp;
    return $341 | 0;
   }
  default:
   {
    $$0 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
    break L1;
   }
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _PCA($input, $output, $ev) {
 $input = $input | 0;
 $output = $output | 0;
 $ev = $ev | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $102 = 0.0, $11 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $120 = 0, $121 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $128 = 0.0, $138 = 0.0, $14 = 0, $143 = 0.0, $147 = 0.0, $150 = 0.0, $154 = 0.0, $156 = 0, $157 = 0.0, $159 = 0, $160 = 0.0, $161 = 0.0, $164 = 0, $168 = 0.0, $17 = 0, $172 = 0, $179 = 0.0, $18 = 0, $184 = 0, $185 = 0, $186 = 0, $188 = 0, $189 = 0.0, $191 = 0, $192 = 0.0, $2 = 0, $202 = 0.0, $204 = 0, $205 = 0.0, $21 = 0, $210 = 0.0, $212 = 0.0, $219 = 0, $220 = 0.0, $223 = 0.0, $224 = 0, $232 = 0.0, $237 = 0, $238 = 0, $24 = 0, $25 = 0, $251 = 0, $253 = 0, $256 = 0, $257 = 0, $259 = 0.0, $26 = 0, $263 = 0.0, $264 = 0, $272 = 0.0, $279 = 0, $28 = 0, $287 = 0, $289 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $30 = 0, $304 = 0, $31 = 0, $35 = 0, $37 = 0, $47 = 0.0, $5 = 0, $55 = 0, $57 = 0, $61 = 0, $63 = 0, $70 = 0.0, $8 = 0, $82 = 0, $84 = 0, $90 = 0, $92 = 0, $93 = 0, $97 = 0.0, $98 = 0, $99 = 0, $c$0$i = 0.0, $ev1$i = 0, $exitcond$i133 = 0, $exitcond$i14148 = 0, $exitcond$i28106 = 0, $exitcond$i651 = 0, $exitcond3$i59 = 0, $exitcond6$i115 = 0, $exitcond82 = 0, $h$0$i127 = 0, $h$1$i$lcssa = 0, $h$1$i100 = 0, $h$2$i = 0, $i$0$i11155 = 0, $i$0$i141 = 0, $i$0$i2$lcssa = 0, $i$0$i25116 = 0, $i$0$i266 = 0, $i$0$lcssa = 0, $i$090 = 0, $i$1$i2799 = 0, $i$1$i49 = 0, $i$180 = 0, $i$2$i109 = 0, $in1$0$i129 = 0, $in1$0$i17144 = 0, $in2$0$i128 = 0, $in2$0$i16143 = 0, $iter$0$i = 0, $j$0$i13152 = 0, $j$0$i137 = 0, $j$0$i23 = 0, $j$0$i23$lcssa = 0, $j$0$i461 = 0, $j$085 = 0, $j$1$i47 = 0, $j$175 = 0, $k$0$i130 = 0, $k$0$i18145 = 0, $k$0$i24124 = 0, $k$0$i555 = 0, $k$1$i113 = 0, $m$0$i$lcssa = 0, $m$0$i65 = 0, $m$1$i60 = 0, $m$2$i48 = 0, $m$3$i46 = 0, $m1$0$i54 = 0, $m1$089 = 0, $m1$184 = 0, $m2$0$i52 = 0, $m2$0$lcssa = 0, $m2$088 = 0, $m2$183 = 0, $m2$279 = 0, $m2$374 = 0, $out$0$i10154 = 0, $out$0$i140 = 0, $out$1$i12149 = 0, $out$1$i134 = 0, $s$1$i = 0.0, $scevgep2$i = 0, $scevgep41 = 0, $smax$i = 0, $smax38 = 0, $sum$0$i$lcssa = 0.0, $sum$0$i53 = 0.0, $t$0$i$lcssa = 0.0, $t$0$i98 = 0.0, $t$1$i = 0.0, $v1$0$i107 = 0, $v2$0$i108 = 0, $x$0$i$be = 0.0, $x$0$i122 = 0.0, $x$1$i$lcssa = 0.0, $y$0$i$be = 0.0, $y$0$i123 = 0.0, $y$1$i$lcssa = 0.0, sp = 0, $k$0$i24124$looptemp = 0, $h$0$i127$looptemp = 0, $k$1$i113$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ev1$i = sp;
 $0 = $input + 4 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = $input + 8 | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 $5 = ($3 | 0) < ($1 | 0) ? $3 : $1;
 L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else {
  $8 = $output + 8 | 0;
  if ((HEAP32[$8 >> 2] | 0) == ($3 | 0)) {
   $11 = $output + 4 | 0;
   if ((HEAP32[$11 >> 2] | 0) == ($5 | 0)) {
    $14 = $ev + 4 | 0;
    if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {
     $17 = _arMatrixAlloc($5, $5) | 0;
     $18 = $17 + 4 | 0;
     if ((HEAP32[$18 >> 2] | 0) == ($5 | 0)) {
      $21 = $17 + 8 | 0;
      if ((HEAP32[$21 >> 2] | 0) == ($5 | 0)) {
       $24 = ($1 | 0) < ($3 | 0);
       $25 = HEAP32[$0 >> 2] | 0;
       $26 = HEAP32[$2 >> 2] | 0;
       if ($24) {
        if (($5 | 0) != ($25 | 0)) {
         _arMatrixFree($17) | 0;
         $$0 = -1;
         break;
        }
        $28 = HEAP32[$17 >> 2] | 0;
        if (($5 | 0) > 0) {
         $exitcond$i133 = ($5 | 0) == 0;
         $30 = ($26 | 0) > 0;
         $i$0$i141 = 0;
         $out$0$i140 = $28;
         while (1) {
          $31 = Math_imul($i$0$i141, $26) | 0;
          if (!$exitcond$i133) {
           $j$0$i137 = 0;
           $out$1$i134 = $out$0$i140;
           while (1) {
            if (($j$0$i137 | 0) < ($i$0$i141 | 0)) {
             $35 = $28 + ((Math_imul($j$0$i137, $5) | 0) + $i$0$i141 << 3) | 0;
             HEAPF64[$out$1$i134 >> 3] = +HEAPF64[$35 >> 3];
            } else {
             $37 = HEAP32[$input >> 2] | 0;
             HEAPF64[$out$1$i134 >> 3] = 0.0;
             if ($30) {
              $47 = 0.0;
              $in1$0$i129 = $37 + ($31 << 3) | 0;
              $in2$0$i128 = $37 + ((Math_imul($j$0$i137, $26) | 0) << 3) | 0;
              $k$0$i130 = 0;
              while (1) {
               $47 = $47 + +HEAPF64[$in1$0$i129 >> 3] * +HEAPF64[$in2$0$i128 >> 3];
               HEAPF64[$out$1$i134 >> 3] = $47;
               $k$0$i130 = $k$0$i130 + 1 | 0;
               if (($k$0$i130 | 0) >= ($26 | 0)) break; else {
                $in1$0$i129 = $in1$0$i129 + 8 | 0;
                $in2$0$i128 = $in2$0$i128 + 8 | 0;
               }
              }
             }
            }
            $j$0$i137 = $j$0$i137 + 1 | 0;
            if (($j$0$i137 | 0) == ($5 | 0)) break; else $out$1$i134 = $out$1$i134 + 8 | 0;
           }
          }
          $i$0$i141 = $i$0$i141 + 1 | 0;
          if (($i$0$i141 | 0) >= ($5 | 0)) break; else $out$0$i140 = $out$0$i140 + ($5 << 3) | 0;
         }
        }
       } else {
        if (($5 | 0) != ($26 | 0)) {
         _arMatrixFree($17) | 0;
         $$0 = -1;
         break;
        }
        $55 = HEAP32[$17 >> 2] | 0;
        if (($5 | 0) > 0) {
         $exitcond$i14148 = ($5 | 0) == 0;
         $57 = ($25 | 0) > 0;
         $i$0$i11155 = 0;
         $out$0$i10154 = $55;
         while (1) {
          if (!$exitcond$i14148) {
           $j$0$i13152 = 0;
           $out$1$i12149 = $out$0$i10154;
           while (1) {
            if (($j$0$i13152 | 0) < ($i$0$i11155 | 0)) {
             $61 = $55 + ((Math_imul($j$0$i13152, $5) | 0) + $i$0$i11155 << 3) | 0;
             HEAPF64[$out$1$i12149 >> 3] = +HEAPF64[$61 >> 3];
            } else {
             $63 = HEAP32[$input >> 2] | 0;
             HEAPF64[$out$1$i12149 >> 3] = 0.0;
             if ($57) {
              $70 = 0.0;
              $in1$0$i17144 = $63 + ($i$0$i11155 << 3) | 0;
              $in2$0$i16143 = $63 + ($j$0$i13152 << 3) | 0;
              $k$0$i18145 = 0;
              while (1) {
               $70 = $70 + +HEAPF64[$in1$0$i17144 >> 3] * +HEAPF64[$in2$0$i16143 >> 3];
               HEAPF64[$out$1$i12149 >> 3] = $70;
               $k$0$i18145 = $k$0$i18145 + 1 | 0;
               if (($k$0$i18145 | 0) >= ($25 | 0)) break; else {
                $in1$0$i17144 = $in1$0$i17144 + ($5 << 3) | 0;
                $in2$0$i16143 = $in2$0$i16143 + ($5 << 3) | 0;
               }
              }
             }
            }
            $j$0$i13152 = $j$0$i13152 + 1 | 0;
            if (($j$0$i13152 | 0) == ($5 | 0)) break; else $out$1$i12149 = $out$1$i12149 + 8 | 0;
           }
          }
          $i$0$i11155 = $i$0$i11155 + 1 | 0;
          if (($i$0$i11155 | 0) >= ($5 | 0)) break; else $out$0$i10154 = $out$0$i10154 + ($5 << 3) | 0;
         }
        }
       }
       do if (($5 | 0) >= 2) if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {
        $82 = _arVecAlloc($5) | 0;
        if ($82) {
         $84 = $5 + -1 | 0;
         HEAP32[$ev1$i + 4 >> 2] = $84;
         HEAP32[$ev1$i >> 2] = (HEAP32[$82 >> 2] | 0) + 8;
         if ((_arVecTridiagonalize($17, $ev, $ev1$i) | 0) < 0) {
          _arVecFree($82) | 0;
          break;
         }
         $90 = HEAP32[$82 >> 2] | 0;
         HEAPF64[$90 >> 3] = 0.0;
         if (($84 | 0) > 0) {
          $exitcond6$i115 = ($5 | 0) == 0;
          $h$0$i127 = $84;
          do {
           $j$0$i23 = $h$0$i127;
           while (1) {
            if (($j$0$i23 | 0) <= 0) {
             $j$0$i23$lcssa = $j$0$i23;
             break;
            }
            $97 = +Math_abs(+(+HEAPF64[$90 + ($j$0$i23 << 3) >> 3]));
            $98 = $j$0$i23 + -1 | 0;
            $99 = HEAP32[$ev >> 2] | 0;
            $102 = +Math_abs(+(+HEAPF64[$99 + ($98 << 3) >> 3]));
            if ($97 > ($102 + +Math_abs(+(+HEAPF64[$99 + ($j$0$i23 << 3) >> 3]))) * 1.0e-06) $j$0$i23 = $98; else {
             $j$0$i23$lcssa = $j$0$i23;
             break;
            }
           }
           $h$0$i127$looptemp = $h$0$i127;
           $h$0$i127 = $h$0$i127 + -1 | 0;
           L62 : do if (($j$0$i23$lcssa | 0) != ($h$0$i127$looptemp | 0)) {
            $112 = $90 + ($h$0$i127$looptemp << 3) | 0;
            $113 = $90 + ($j$0$i23$lcssa + 1 << 3) | 0;
            $114 = ($j$0$i23$lcssa | 0) < ($h$0$i127$looptemp | 0);
            $iter$0$i = 0;
            do {
             if (($iter$0$i | 0) > 99) break L62;
             $iter$0$i = $iter$0$i + 1 | 0;
             $117 = HEAP32[$ev >> 2] | 0;
             $118 = $117 + ($h$0$i127 << 3) | 0;
             $120 = $117 + ($h$0$i127$looptemp << 3) | 0;
             $121 = +HEAPF64[$120 >> 3];
             $123 = (+HEAPF64[$118 >> 3] - $121) * .5;
             $124 = +HEAPF64[$112 >> 3];
             $125 = $124 * $124;
             $128 = +Math_sqrt(+($125 + $123 * $123));
             if ($114) {
              $k$0$i24124 = $j$0$i23$lcssa;
              $x$0$i122 = +HEAPF64[$117 + ($j$0$i23$lcssa << 3) >> 3] - $121 + $125 / ($123 + ($123 < 0.0 ? -$128 : $128));
              $y$0$i123 = +HEAPF64[$113 >> 3];
              while (1) {
               $138 = +Math_abs(+$x$0$i122);
               do if (!($138 >= +Math_abs(+$y$0$i123))) {
                $150 = -$x$0$i122 / $y$0$i123;
                $154 = 1.0 / +Math_sqrt(+($150 * $150 + 1.0));
                $c$0$i = $150 * $154;
                $s$1$i = $154;
               } else {
                if (!($138 > 1.0e-16)) {
                 $c$0$i = 1.0;
                 $s$1$i = 0.0;
                 break;
                }
                $143 = -$y$0$i123 / $x$0$i122;
                $147 = 1.0 / +Math_sqrt(+($143 * $143 + 1.0));
                $c$0$i = $147;
                $s$1$i = $143 * $147;
               } while (0);
               $156 = $117 + ($k$0$i24124 << 3) | 0;
               $157 = +HEAPF64[$156 >> 3];
               $k$0$i24124$looptemp = $k$0$i24124;
               $k$0$i24124 = $k$0$i24124 + 1 | 0;
               $159 = $117 + ($k$0$i24124 << 3) | 0;
               $160 = +HEAPF64[$159 >> 3];
               $161 = $157 - $160;
               $164 = $90 + ($k$0$i24124 << 3) | 0;
               $168 = $s$1$i * ($s$1$i * $161 + $c$0$i * 2.0 * +HEAPF64[$164 >> 3]);
               HEAPF64[$156 >> 3] = $157 - $168;
               HEAPF64[$159 >> 3] = $160 + $168;
               if (($k$0$i24124$looptemp | 0) > ($j$0$i23$lcssa | 0)) {
                $172 = $90 + ($k$0$i24124$looptemp << 3) | 0;
                HEAPF64[$172 >> 3] = $c$0$i * +HEAPF64[$172 >> 3] - $y$0$i123 * $s$1$i;
               }
               $179 = +HEAPF64[$164 >> 3];
               HEAPF64[$164 >> 3] = $179 + $s$1$i * ($c$0$i * $161 - $s$1$i * 2.0 * $179);
               $184 = Math_imul($k$0$i24124$looptemp, $5) | 0;
               $185 = Math_imul($k$0$i24124, $5) | 0;
               if ($exitcond6$i115) {
                $x$1$i$lcssa = $x$0$i122;
                $y$1$i$lcssa = $y$0$i123;
               } else {
                $186 = HEAP32[$17 >> 2] | 0;
                $i$0$i25116 = 0;
                do {
                 $188 = $186 + ($i$0$i25116 + $184 << 3) | 0;
                 $189 = +HEAPF64[$188 >> 3];
                 $191 = $186 + ($i$0$i25116 + $185 << 3) | 0;
                 $192 = +HEAPF64[$191 >> 3];
                 HEAPF64[$188 >> 3] = $c$0$i * $189 - $s$1$i * $192;
                 HEAPF64[$191 >> 3] = $s$1$i * $189 + $c$0$i * $192;
                 $i$0$i25116 = $i$0$i25116 + 1 | 0;
                } while (($i$0$i25116 | 0) != ($5 | 0));
                $x$1$i$lcssa = $189;
                $y$1$i$lcssa = $192;
               }
               if (($k$0$i24124$looptemp | 0) < ($h$0$i127 | 0)) {
                $202 = +HEAPF64[$164 >> 3];
                $204 = $90 + ($k$0$i24124$looptemp + 2 << 3) | 0;
                $205 = +HEAPF64[$204 >> 3];
                HEAPF64[$204 >> 3] = $c$0$i * $205;
                $x$0$i$be = $202;
                $y$0$i$be = -($s$1$i * $205);
               } else {
                $x$0$i$be = $x$1$i$lcssa;
                $y$0$i$be = $y$1$i$lcssa;
               }
               if (($k$0$i24124 | 0) >= ($h$0$i127$looptemp | 0)) break; else {
                $x$0$i122 = $x$0$i$be;
                $y$0$i123 = $y$0$i$be;
               }
              }
             }
             $210 = +Math_abs(+(+HEAPF64[$112 >> 3]));
             $212 = +Math_abs(+(+HEAPF64[$118 >> 3]));
            } while ($210 > ($212 + +Math_abs(+(+HEAPF64[$120 >> 3]))) * 1.0e-06);
           } while (0);
          } while (($h$0$i127$looptemp | 0) > 1);
         }
         if ($84) {
          $92 = HEAP32[$ev >> 2] | 0;
          $93 = HEAP32[$17 >> 2] | 0;
          $exitcond$i28106 = ($5 | 0) == 0;
          $k$1$i113 = 0;
          do {
           $219 = $92 + ($k$1$i113 << 3) | 0;
           $220 = +HEAPF64[$219 >> 3];
           $k$1$i113$looptemp = $k$1$i113;
           $k$1$i113 = $k$1$i113 + 1 | 0;
           if (($k$1$i113 | 0) < ($5 | 0)) {
            $h$1$i100 = $k$1$i113$looptemp;
            $i$1$i2799 = $k$1$i113;
            $t$0$i98 = $220;
            while (1) {
             $223 = +HEAPF64[$92 + ($i$1$i2799 << 3) >> 3];
             $224 = $223 > $t$0$i98;
             $t$1$i = $224 ? $223 : $t$0$i98;
             $h$2$i = $224 ? $i$1$i2799 : $h$1$i100;
             $i$1$i2799 = $i$1$i2799 + 1 | 0;
             if (($i$1$i2799 | 0) >= ($5 | 0)) {
              $h$1$i$lcssa = $h$2$i;
              $t$0$i$lcssa = $t$1$i;
              break;
             } else {
              $h$1$i100 = $h$2$i;
              $t$0$i98 = $t$1$i;
             }
            }
           } else {
            $h$1$i$lcssa = $k$1$i113$looptemp;
            $t$0$i$lcssa = $220;
           }
           HEAPF64[$92 + ($h$1$i$lcssa << 3) >> 3] = $220;
           HEAPF64[$219 >> 3] = $t$0$i$lcssa;
           if (!$exitcond$i28106) {
            $i$2$i109 = 0;
            $v1$0$i107 = $93 + ((Math_imul($h$1$i$lcssa, $5) | 0) << 3) | 0;
            $v2$0$i108 = $93 + ((Math_imul($k$1$i113$looptemp, $5) | 0) << 3) | 0;
            while (1) {
             $232 = +HEAPF64[$v1$0$i107 >> 3];
             HEAPF64[$v1$0$i107 >> 3] = +HEAPF64[$v2$0$i108 >> 3];
             HEAPF64[$v2$0$i108 >> 3] = $232;
             $i$2$i109 = $i$2$i109 + 1 | 0;
             if (($i$2$i109 | 0) == ($5 | 0)) break; else {
              $v1$0$i107 = $v1$0$i107 + 8 | 0;
              $v2$0$i108 = $v2$0$i108 + 8 | 0;
             }
            }
           }
          } while (($k$1$i113 | 0) != ($84 | 0));
         }
         _arVecFree($82) | 0;
         L104 : do if ($24) {
          $237 = HEAP32[$0 >> 2] | 0;
          $238 = HEAP32[$2 >> 2] | 0;
          do if (!(($237 | 0) < 1 | ($238 | 0) < 1)) {
           if ((HEAP32[$18 >> 2] | 0) != ($237 | 0)) break;
           if ((HEAP32[$21 >> 2] | 0) != ($237 | 0)) break;
           if ((HEAP32[$11 >> 2] | 0) != ($237 | 0)) break;
           if ((HEAP32[$8 >> 2] | 0) != ($238 | 0)) break;
           if ((HEAP32[$14 >> 2] | 0) != ($237 | 0)) break;
           $251 = HEAP32[$output >> 2] | 0;
           L113 : do if (($237 | 0) > 0) {
            $253 = HEAP32[$ev >> 2] | 0;
            $exitcond3$i59 = ($238 | 0) == 0;
            $exitcond$i651 = ($237 | 0) == 0;
            $i$0$i266 = 0;
            $m$0$i65 = $251;
            while (1) {
             $259 = +HEAPF64[$253 + ($i$0$i266 << 3) >> 3];
             if ($259 < 1.0e-16) {
              $i$0$i2$lcssa = $i$0$i266;
              $m$0$i$lcssa = $m$0$i65;
              break L113;
             }
             $263 = 1.0 / +Math_sqrt(+(+Math_abs(+$259)));
             $264 = Math_imul($i$0$i266, $237) | 0;
             if (!$exitcond3$i59) {
              $j$0$i461 = 0;
              $m$1$i60 = $m$0$i65;
              while (1) {
               if ($exitcond$i651) $sum$0$i$lcssa = 0.0; else {
                $k$0$i555 = 0;
                $m1$0$i54 = (HEAP32[$17 >> 2] | 0) + ($264 << 3) | 0;
                $m2$0$i52 = (HEAP32[$input >> 2] | 0) + ($j$0$i461 << 3) | 0;
                $sum$0$i53 = 0.0;
                while (1) {
                 $272 = $sum$0$i53 + +HEAPF64[$m1$0$i54 >> 3] * +HEAPF64[$m2$0$i52 >> 3];
                 $k$0$i555 = $k$0$i555 + 1 | 0;
                 if (($k$0$i555 | 0) == ($237 | 0)) {
                  $sum$0$i$lcssa = $272;
                  break;
                 } else {
                  $m1$0$i54 = $m1$0$i54 + 8 | 0;
                  $m2$0$i52 = $m2$0$i52 + ($238 << 3) | 0;
                  $sum$0$i53 = $272;
                 }
                }
               }
               HEAPF64[$m$1$i60 >> 3] = $263 * $sum$0$i$lcssa;
               $j$0$i461 = $j$0$i461 + 1 | 0;
               if (($j$0$i461 | 0) == ($238 | 0)) break; else $m$1$i60 = $m$1$i60 + 8 | 0;
              }
             }
             $scevgep2$i = $m$0$i65 + ($238 << 3) | 0;
             $279 = $i$0$i266 + 1 | 0;
             if (($279 | 0) < ($237 | 0)) {
              $i$0$i266 = $279;
              $m$0$i65 = $scevgep2$i;
             } else {
              $i$0$i2$lcssa = $279;
              $m$0$i$lcssa = $scevgep2$i;
              break;
             }
            }
           } else {
            $i$0$i2$lcssa = 0;
            $m$0$i$lcssa = $251;
           } while (0);
           $smax$i = ($238 | 0) > 0 ? $238 : 0;
           if (($i$0$i2$lcssa | 0) >= ($237 | 0)) break L104;
           $256 = HEAP32[$ev >> 2] | 0;
           $257 = ($238 | 0) > 0;
           $i$1$i49 = $i$0$i2$lcssa;
           $m$2$i48 = $m$0$i$lcssa;
           while (1) {
            HEAPF64[$256 + ($i$1$i49 << 3) >> 3] = 0.0;
            if ($257) {
             $j$1$i47 = 0;
             $m$3$i46 = $m$2$i48;
             while (1) {
              HEAPF64[$m$3$i46 >> 3] = 0.0;
              $j$1$i47 = $j$1$i47 + 1 | 0;
              if (($j$1$i47 | 0) >= ($238 | 0)) break; else $m$3$i46 = $m$3$i46 + 8 | 0;
             }
            }
            $i$1$i49 = $i$1$i49 + 1 | 0;
            if (($i$1$i49 | 0) >= ($237 | 0)) break L104; else $m$2$i48 = $m$2$i48 + ($smax$i << 3) | 0;
           }
          } while (0);
          _arMatrixFree($17) | 0;
          $$0 = -1;
          break L1;
         } else {
          $287 = HEAP32[$output >> 2] | 0;
          $289 = ($1 | 0) > ($3 | 0) ? $3 : $1;
          L137 : do if (($5 | 0) > 0) {
           $292 = HEAP32[$ev >> 2] | 0;
           $exitcond82 = ($289 | 0) == 0;
           $i$090 = 0;
           $m1$089 = HEAP32[$17 >> 2] | 0;
           $m2$088 = $287;
           while (1) {
            if (+HEAPF64[$292 + ($i$090 << 3) >> 3] < 1.0e-16) {
             $i$0$lcssa = $i$090;
             $m2$0$lcssa = $m2$088;
             break L137;
            }
            if (!$exitcond82) {
             $j$085 = 0;
             $m1$184 = $m1$089;
             $m2$183 = $m2$088;
             while (1) {
              HEAPF64[$m2$183 >> 3] = +HEAPF64[$m1$184 >> 3];
              $j$085 = $j$085 + 1 | 0;
              if (($j$085 | 0) == ($289 | 0)) break; else {
               $m1$184 = $m1$184 + 8 | 0;
               $m2$183 = $m2$183 + 8 | 0;
              }
             }
            }
            $m1$089 = $m1$089 + ($289 << 3) | 0;
            $scevgep41 = $m2$088 + ($289 << 3) | 0;
            $304 = $i$090 + 1 | 0;
            if (($304 | 0) >= ($5 | 0)) {
             $i$0$lcssa = $304;
             $m2$0$lcssa = $scevgep41;
             break;
            } else {
             $i$090 = $304;
             $m2$088 = $scevgep41;
            }
           }
          } else {
           $i$0$lcssa = 0;
           $m2$0$lcssa = $287;
          } while (0);
          $smax38 = ($289 | 0) > 0 ? $289 : 0;
          if (($i$0$lcssa | 0) < ($5 | 0)) {
           $295 = HEAP32[$ev >> 2] | 0;
           $296 = ($5 | 0) > 0;
           $i$180 = $i$0$lcssa;
           $m2$279 = $m2$0$lcssa;
           while (1) {
            HEAPF64[$295 + ($i$180 << 3) >> 3] = 0.0;
            if ($296) {
             $j$175 = 0;
             $m2$374 = $m2$279;
             while (1) {
              HEAPF64[$m2$374 >> 3] = 0.0;
              $j$175 = $j$175 + 1 | 0;
              if (($j$175 | 0) >= ($5 | 0)) break; else $m2$374 = $m2$374 + 8 | 0;
             }
            }
            $i$180 = $i$180 + 1 | 0;
            if (($i$180 | 0) >= ($5 | 0)) break; else $m2$279 = $m2$279 + ($smax38 << 3) | 0;
           }
          }
         } while (0);
         _arMatrixFree($17) | 0;
         $$0 = 0;
         break L1;
        }
       } while (0);
       _arMatrixFree($17) | 0;
       $$0 = -1;
       break;
      }
     }
     _arMatrixFree($17) | 0;
     $$0 = -1;
    } else $$0 = -1;
   } else $$0 = -1;
  } else $$0 = -1;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arDetectMarker($arHandle, $dataPtr) {
 $arHandle = $arHandle | 0;
 $dataPtr = $dataPtr | 0;
 var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa109 = 0.0, $$lcssa110 = 0.0, $$pr10 = 0, $$pre$phi45Z2D = 0, $$pre$phi47Z2D = 0, $$pre$phi49Z2D = 0, $$pre$phi51Z2D = 0, $$pre$phi53Z2D = 0, $$pre$phiZ2D = 0, $$pre35 = 0, $$pre37 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $104 = 0, $106 = 0, $115 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $126 = 0, $132 = 0, $135 = 0, $14 = 0, $144 = 0, $146 = 0, $155 = 0, $157 = 0, $16 = 0, $163 = 0, $164 = 0, $187 = 0, $190 = 0, $191 = 0, $193 = 0, $195 = 0, $196 = 0, $199 = 0.0, $2 = 0, $20 = 0, $202 = 0.0, $203 = 0.0, $209 = 0.0, $21 = 0, $214 = 0.0, $217 = 0.0, $22 = 0, $222 = 0, $223 = 0, $226 = 0.0, $229 = 0, $23 = 0, $231 = 0, $235 = 0, $238 = 0.0, $24 = 0, $244 = 0.0, $247 = 0.0, $25 = 0, $26 = 0, $262 = 0, $265 = 0.0, $267 = 0, $269 = 0, $27 = 0, $28 = 0, $282 = 0, $285 = 0.0, $29 = 0, $291 = 0.0, $294 = 0.0, $296 = 0, $30 = 0, $300 = 0, $31 = 0, $313 = 0, $314 = 0, $316 = 0, $32 = 0, $324 = 0, $326 = 0, $328 = 0, $33 = 0, $330 = 0, $335 = 0, $343 = 0, $350 = 0, $351 = 0, $353 = 0, $355 = 0.0, $358 = 0.0, $359 = 0.0, $365 = 0.0, $370 = 0.0, $375 = 0, $381 = 0, $385 = 0, $386 = 0, $387 = 0, $4 = 0, $5 = 0, $69 = 0, $71 = 0, $72 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $8 = 0, $80 = 0, $83 = 0, $86 = 0, $89 = 0, $9 = 0, $91 = 0, $92 = 0, $cdir$1 = 0, $cdir$1$lcssa = 0, $cdir$295 = 0, $cdir$3 = 0, $cdir$3$lcssa = 0, $cid$0$lcssa = 0, $cid$087 = 0, $cid$1 = 0, $diff$097 = 0.0, $diff$192 = 0.0, $diffmin$099 = 0.0, $diffmin$1 = 0.0, $diffmin$294 = 0.0, $i$0104 = 0, $i$1101 = 0, $i$280 = 0, $i$373 = 0, $i$467 = 0, $j$088 = 0, $j$1100 = 0, $j$296 = 0, $j$3$lcssa = 0, $j$381 = 0, $j$4 = 0, $j$5$lcssa = 0, $j$568 = 0, $j$6$lcssa = 0, $j$663 = 0, $k$098 = 0, $k$193 = 0, $marker_nums = 0, $ret1$0 = 0, $rlenmin$086 = 0.0, $rlenmin$1 = 0.0, $storemerge = 0, $storemerge11 = 0, $storemerge4 = 0, $thresholds = 0, $value = 0, $vararg_buffer = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer9 = sp + 32 | 0;
 $vararg_buffer6 = sp + 24 | 0;
 $vararg_buffer = sp;
 $thresholds = sp + 52 | 0;
 $marker_nums = sp + 40 | 0;
 $value = sp + 64 | 0;
 $0 = $arHandle + 44 | 0;
 HEAP32[$0 >> 2] = 0;
 $1 = $arHandle + 7062388 | 0;
 $2 = HEAP32[$1 >> 2] | 0;
 L1 : do if (($2 | 0) == 4) {
  $4 = $arHandle + 7062396 | 0;
  $5 = HEAP32[$4 >> 2] | 0;
  do if (($5 | 0) > 0) {
   $$pr10 = 4;
   $storemerge11 = $5 + -1 | 0;
  } else {
   $8 = $arHandle + 16 | 0;
   $9 = HEAP32[$8 >> 2] | 0;
   $10 = $arHandle + 7062400 | 0;
   $12 = (HEAP32[$10 >> 2] | 0) + $9 | 0;
   $$ = ($12 | 0) > 255 ? 255 : $12;
   HEAP32[$thresholds >> 2] = $$;
   $14 = $arHandle + 7062404 | 0;
   $16 = $9 - (HEAP32[$14 >> 2] | 0) | 0;
   $storemerge4 = ($16 | 0) < 0 ? 0 : $16;
   HEAP32[$thresholds + 4 >> 2] = $storemerge4;
   HEAP32[$thresholds + 8 >> 2] = $9;
   $20 = $arHandle + 36 | 0;
   $21 = $arHandle + 40 | 0;
   $22 = $arHandle + 4 | 0;
   $23 = $arHandle + 12 | 0;
   $24 = $arHandle + 20 | 0;
   $25 = $arHandle + 4834144 | 0;
   $26 = $arHandle + 15416 | 0;
   $27 = $arHandle + 15408 | 0;
   $28 = $arHandle + 7062384 | 0;
   $29 = $arHandle + 24 | 0;
   $30 = $arHandle + 32 | 0;
   $31 = $arHandle + 7062416 | 0;
   $32 = $arHandle + 48 | 0;
   $33 = $arHandle + 7062424 | 0;
   $i$0104 = 0;
   do {
    if ((_arLabeling($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$23 >> 2] | 0, HEAP32[$thresholds + ($i$0104 << 2) >> 2] | 0, HEAP32[$24 >> 2] | 0, $25, 0) | 0) < 0) {
     $$0 = -1;
     break L1;
    }
    if ((_arDetectMarker2(HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, $25, HEAP32[$24 >> 2] | 0, 1e6, 70, 1.0, $26, $27) | 0) < 0) {
     $$0 = -1;
     break L1;
    }
    if ((_arGetMarkerInfo($dataPtr, HEAP32[$20 >> 2] | 0, HEAP32[$21 >> 2] | 0, HEAP32[$22 >> 2] | 0, $26, HEAP32[$27 >> 2] | 0, HEAP32[$28 >> 2] | 0, HEAP32[$24 >> 2] | 0, HEAP32[$29 >> 2] | 0, (HEAP32[$30 >> 2] | 0) + 184 | 0, +HEAPF64[$31 >> 3], $32, $0, HEAP32[$33 >> 2] | 0) | 0) < 0) {
     $$0 = -1;
     break L1;
    }
    HEAP32[$marker_nums + ($i$0104 << 2) >> 2] = HEAP32[$0 >> 2];
    $i$0104 = $i$0104 + 1 | 0;
   } while (($i$0104 | 0) < 3);
   if ((HEAP32[$arHandle >> 2] | 0) == 1) {
    $69 = HEAP32[$marker_nums + 4 >> 2] | 0;
    $71 = HEAP32[$marker_nums + 8 >> 2] | 0;
    $72 = HEAP32[$marker_nums >> 2] | 0;
    HEAP32[$vararg_buffer >> 2] = $storemerge4;
    HEAP32[$vararg_buffer + 4 >> 2] = $69;
    HEAP32[$vararg_buffer + 8 >> 2] = $9;
    HEAP32[$vararg_buffer + 12 >> 2] = $71;
    HEAP32[$vararg_buffer + 16 >> 2] = $$;
    HEAP32[$vararg_buffer + 20 >> 2] = $72;
    _arLog(3, 4153, $vararg_buffer);
    $74 = $72;
    $75 = $71;
   } else {
    $74 = HEAP32[$marker_nums >> 2] | 0;
    $75 = HEAP32[$marker_nums + 8 >> 2] | 0;
   }
   $$pre35 = HEAP32[$marker_nums + 4 >> 2] | 0;
   if (($74 | 0) > ($75 | 0) | ($$pre35 | 0) > ($75 | 0)) {
    $91 = ($74 | 0) >= ($$pre35 | 0) ? $$ : $storemerge4;
    HEAP32[$8 >> 2] = $91;
    $92 = $91 - $9 | 0;
    if (($92 | 0) > 0) {
     HEAP32[$10 >> 2] = $92;
     $storemerge = 1;
    } else {
     HEAP32[$10 >> 2] = 1;
     $storemerge = 0 - $92 | 0;
    }
    HEAP32[$14 >> 2] = $storemerge;
    if ((HEAP32[$arHandle >> 2] | 0) == 1) {
     HEAP32[$vararg_buffer6 >> 2] = $91;
     _arLog(3, 4229, $vararg_buffer6);
    }
    $$pr10 = HEAP32[$1 >> 2] | 0;
    $storemerge11 = HEAP32[$arHandle + 7062392 >> 2] | 0;
    break;
   }
   $77 = HEAP32[$10 >> 2] | 0;
   $78 = HEAP32[$14 >> 2] | 0;
   do if (($77 | 0) < ($78 | 0)) {
    $80 = $77 + 1 | 0;
    HEAP32[$10 >> 2] = $80;
    $86 = $80;
   } else if (($77 | 0) > ($78 | 0)) {
    HEAP32[$14 >> 2] = $78 + 1;
    $86 = $77;
    break;
   } else {
    $83 = $77 + 1 | 0;
    HEAP32[$10 >> 2] = $83;
    HEAP32[$14 >> 2] = $78 + 1;
    $86 = $83;
    break;
   } while (0);
   if (($86 + $9 | 0) > 254) {
    HEAP32[$10 >> 2] = 1;
    $89 = 1;
   } else $89 = $86;
   if (($9 | 0) <= ($89 | 0)) HEAP32[$14 >> 2] = 1;
   HEAP32[$4 >> 2] = HEAP32[$arHandle + 7062392 >> 2];
   label = 47;
   break L1;
  } while (0);
  HEAP32[$4 >> 2] = $storemerge11;
  $101 = $$pr10;
  label = 30;
 } else {
  $101 = $2;
  label = 30;
 } while (0);
 L40 : do if ((label | 0) == 30) {
  L42 : do switch ($101 | 0) {
  case 3:
   {
    $102 = $arHandle + 7062408 | 0;
    $104 = _arImageProcLumaHistAndBoxFilterWithBias(HEAP32[$102 >> 2] | 0, $dataPtr, 9, -7) | 0;
    if (($104 | 0) < 0) {
     $$0 = $104;
     break L40;
    }
    $106 = HEAP32[$102 >> 2] | 0;
    $115 = $arHandle + 4834144 | 0;
    $118 = _arLabeling(HEAP32[$106 >> 2] | 0, HEAP32[$106 + 8 >> 2] | 0, HEAP32[$106 + 12 >> 2] | 0, 5, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, 0, 0, $115, HEAP32[$106 + 4 >> 2] | 0) | 0;
    if (($118 | 0) < 0) {
     $$0 = $118;
     break L40;
    }
    $$pre$phi45Z2D = $arHandle + 36 | 0;
    $$pre$phi47Z2D = $arHandle + 40 | 0;
    $$pre$phi49Z2D = $arHandle + 20 | 0;
    $$pre$phiZ2D = $115;
    break;
   }
  case 2:
  case 1:
   {
    $120 = $arHandle + 7062396 | 0;
    $121 = HEAP32[$120 >> 2] | 0;
    if (($121 | 0) > 0) {
     HEAP32[$120 >> 2] = $121 + -1;
     label = 44;
     break L42;
    }
    $126 = HEAP32[$arHandle + 7062408 >> 2] | 0;
    if (($101 | 0) == 1) $ret1$0 = _arImageProcLumaHistAndCDFAndMedian($126, $dataPtr, $value) | 0; else $ret1$0 = _arImageProcLumaHistAndOtsu($126, $dataPtr, $value) | 0;
    if (($ret1$0 | 0) < 0) {
     $$0 = $ret1$0;
     break L40;
    }
    $132 = $arHandle + 16 | 0;
    if ((HEAP32[$arHandle >> 2] | 0) == 1) {
     $135 = HEAPU8[$value >> 0] | 0;
     if ((HEAP32[$132 >> 2] | 0) != ($135 | 0)) {
      HEAP32[$vararg_buffer9 >> 2] = (HEAP32[$1 >> 2] | 0) == 1 ? 4281 : 4288;
      HEAP32[$vararg_buffer9 + 4 >> 2] = $135;
      _arLog(3, 4293, $vararg_buffer9);
     }
    }
    HEAP32[$132 >> 2] = HEAPU8[$value >> 0];
    HEAP32[$120 >> 2] = HEAP32[$arHandle + 7062392 >> 2];
    label = 44;
    break;
   }
  default:
   label = 44;
  } while (0);
  if ((label | 0) == 44) {
   $144 = $arHandle + 36 | 0;
   $146 = $arHandle + 40 | 0;
   $155 = $arHandle + 20 | 0;
   $157 = $arHandle + 4834144 | 0;
   if ((_arLabeling($dataPtr, HEAP32[$144 >> 2] | 0, HEAP32[$146 >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, HEAP32[$arHandle >> 2] | 0, HEAP32[$arHandle + 12 >> 2] | 0, HEAP32[$arHandle + 16 >> 2] | 0, HEAP32[$155 >> 2] | 0, $157, 0) | 0) < 0) {
    $$0 = -1;
    break;
   } else {
    $$pre$phi45Z2D = $144;
    $$pre$phi47Z2D = $146;
    $$pre$phi49Z2D = $155;
    $$pre$phiZ2D = $157;
   }
  }
  $163 = $arHandle + 15416 | 0;
  $164 = $arHandle + 15408 | 0;
  if ((_arDetectMarker2(HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, $$pre$phiZ2D, HEAP32[$$pre$phi49Z2D >> 2] | 0, 1e6, 70, 1.0, $163, $164) | 0) < 0) $$0 = -1; else if ((_arGetMarkerInfo($dataPtr, HEAP32[$$pre$phi45Z2D >> 2] | 0, HEAP32[$$pre$phi47Z2D >> 2] | 0, HEAP32[$arHandle + 4 >> 2] | 0, $163, HEAP32[$164 >> 2] | 0, HEAP32[$arHandle + 7062384 >> 2] | 0, HEAP32[$$pre$phi49Z2D >> 2] | 0, HEAP32[$arHandle + 24 >> 2] | 0, (HEAP32[$arHandle + 32 >> 2] | 0) + 184 | 0, +HEAPF64[$arHandle + 7062416 >> 3], $arHandle + 48 | 0, $0, HEAP32[$arHandle + 7062424 >> 2] | 0) | 0) < 0) $$0 = -1; else label = 47;
 } while (0);
 L63 : do if ((label | 0) == 47) {
  $187 = $arHandle + 28 | 0;
  if ((HEAP32[$187 >> 2] | 0) == 1) {
   _confidenceCutoff($arHandle);
   $$0 = 0;
   break;
  }
  $190 = $arHandle + 4818296 | 0;
  $191 = $arHandle + 24 | 0;
  $$pre37 = HEAP32[$190 >> 2] | 0;
  if (($$pre37 | 0) > 0) {
   $i$1101 = 0;
   do {
    $193 = HEAP32[$0 >> 2] | 0;
    $195 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 56 | 0;
    $196 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 64 | 0;
    if (($193 | 0) > 0) {
     $199 = +(HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) >> 2] | 0);
     $cid$087 = -1;
     $j$088 = 0;
     $rlenmin$086 = .5;
     while (1) {
      $202 = +(HEAP32[$arHandle + 48 + ($j$088 << 8) >> 2] | 0);
      $203 = $199 / $202;
      if ($203 < .7 | $203 > 1.43) {
       $cid$1 = $cid$087;
       $rlenmin$1 = $rlenmin$086;
      } else {
       $209 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 56 >> 3] - +HEAPF64[$195 >> 3];
       $214 = +HEAPF64[$arHandle + 48 + ($j$088 << 8) + 64 >> 3] - +HEAPF64[$196 >> 3];
       $217 = ($209 * $209 + $214 * $214) / $202;
       if ($217 < $rlenmin$086) {
        $cid$1 = $j$088;
        $rlenmin$1 = $217;
       } else {
        $cid$1 = $cid$087;
        $rlenmin$1 = $rlenmin$086;
       }
      }
      $j$088 = $j$088 + 1 | 0;
      if (($j$088 | 0) >= ($193 | 0)) {
       $cid$0$lcssa = $cid$1;
       break;
      } else {
       $cid$087 = $cid$1;
       $rlenmin$086 = $rlenmin$1;
      }
     }
    } else $cid$0$lcssa = -1;
    L80 : do if (($cid$0$lcssa | 0) > -1) {
     $222 = HEAP32[$191 >> 2] | 0;
     switch ($222 | 0) {
     case 2:
     case 1:
     case 0:
      break;
     case 4:
     case 3:
      {
       $262 = $arHandle + 48 + ($cid$0$lcssa << 8) + 40 | 0;
       $265 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 40 >> 3];
       if (+HEAPF64[$262 >> 3] < $265) {
        $$pre$phi51Z2D = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0;
        $$pre$phi53Z2D = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0;
       } else {
        $267 = $arHandle + 48 + ($cid$0$lcssa << 8) + 48 | 0;
        $269 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 48 | 0;
        if (+HEAPF64[$267 >> 3] < +HEAPF64[$269 >> 3]) {
         $$pre$phi51Z2D = $269;
         $$pre$phi53Z2D = $267;
        } else break L80;
       }
       HEAPF64[$262 >> 3] = $265;
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 8 >> 2];
       HEAPF64[$$pre$phi53Z2D >> 3] = +HEAPF64[$$pre$phi51Z2D >> 3];
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 12 >> 2];
       $cdir$295 = -1;
       $diffmin$294 = 1.0e8;
       $j$296 = 0;
       while (1) {
        $diff$192 = 0.0;
        $k$193 = 0;
        while (1) {
         $282 = ($k$193 + $j$296 | 0) % 4 | 0;
         $285 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) >> 3];
         $291 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$193 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($282 << 4) + 8 >> 3];
         $294 = $diff$192 + ($285 * $285 + $291 * $291);
         $k$193 = $k$193 + 1 | 0;
         if (($k$193 | 0) == 4) {
          $$lcssa109 = $294;
          break;
         } else $diff$192 = $294;
        }
        $296 = $$lcssa109 < $diffmin$294;
        $cdir$3 = $296 ? $j$296 : $cdir$295;
        $j$296 = $j$296 + 1 | 0;
        if (($j$296 | 0) == 4) {
         $cdir$3$lcssa = $cdir$3;
         break;
        } else {
         $cdir$295 = $cdir$3;
         $diffmin$294 = $296 ? $$lcssa109 : $diffmin$294;
        }
       }
       $300 = 4 - $cdir$3$lcssa | 0;
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 20 >> 2] | 0) | 0) % 4 | 0;
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = ($300 + (HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 24 >> 2] | 0) | 0) % 4 | 0;
       break L80;
       break;
      }
     default:
      {
       $$0 = -1;
       break L63;
      }
     }
     $223 = $arHandle + 48 + ($cid$0$lcssa << 8) + 32 | 0;
     $226 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 32 >> 3];
     if (+HEAPF64[$223 >> 3] < $226) {
      HEAPF64[$223 >> 3] = $226;
      $229 = HEAP32[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 4 >> 2] | 0;
      HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 4 >> 2] = $229;
      $231 = $arHandle + 4818304 + ($i$1101 * 264 | 0) + 16 | 0;
      $385 = -1;
      $diffmin$099 = 1.0e8;
      $j$1100 = 0;
      while (1) {
       $diff$097 = 0.0;
       $k$098 = 0;
       while (1) {
        $235 = ($k$098 + $j$1100 | 0) % 4 | 0;
        $238 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) >> 3];
        $244 = +HEAPF64[$arHandle + 4818304 + ($i$1101 * 264 | 0) + 168 + ($k$098 << 4) + 8 >> 3] - +HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 168 + ($235 << 4) + 8 >> 3];
        $247 = $diff$097 + ($238 * $238 + $244 * $244);
        $k$098 = $k$098 + 1 | 0;
        if (($k$098 | 0) == 4) {
         $$lcssa110 = $247;
         break;
        } else $diff$097 = $247;
       }
       if ($$lcssa110 < $diffmin$099) {
        $cdir$1 = (4 - $j$1100 + (HEAP32[$231 >> 2] | 0) | 0) % 4 | 0;
        $diffmin$1 = $$lcssa110;
       } else {
        $cdir$1 = $385;
        $diffmin$1 = $diffmin$099;
       }
       $j$1100 = $j$1100 + 1 | 0;
       if (($j$1100 | 0) == 4) {
        $cdir$1$lcssa = $cdir$1;
        break;
       } else {
        $385 = $cdir$1;
        $diffmin$099 = $diffmin$1;
       }
      }
      HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 16 >> 2] = $cdir$1$lcssa;
      if ($222 >>> 0 < 2) {
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 8 >> 2] = $229;
       HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 40 >> 3] = $226;
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 20 >> 2] = $cdir$1$lcssa;
       break;
      } else {
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 12 >> 2] = $229;
       HEAPF64[$arHandle + 48 + ($cid$0$lcssa << 8) + 48 >> 3] = $226;
       HEAP32[$arHandle + 48 + ($cid$0$lcssa << 8) + 24 >> 2] = $cdir$1$lcssa;
       break;
      }
     }
    } while (0);
    $i$1101 = $i$1101 + 1 | 0;
   } while (($i$1101 | 0) < ($$pre37 | 0));
  }
  _confidenceCutoff($arHandle);
  if ((HEAP32[$190 >> 2] | 0) > 0) {
   $i$280 = 0;
   $j$381 = 0;
   while (1) {
    $313 = $arHandle + 4818304 + ($i$280 * 264 | 0) | 0;
    $314 = $arHandle + 4818304 + ($i$280 * 264 | 0) + 256 | 0;
    $316 = (HEAP32[$314 >> 2] | 0) + 1 | 0;
    HEAP32[$314 >> 2] = $316;
    if (($316 | 0) < 4) {
     if (($i$280 | 0) != ($j$381 | 0)) _memcpy($arHandle + 4818304 + ($j$381 * 264 | 0) | 0, $313 | 0, 264) | 0;
     $j$4 = $j$381 + 1 | 0;
    } else $j$4 = $j$381;
    $i$280 = $i$280 + 1 | 0;
    if (($i$280 | 0) >= (HEAP32[$190 >> 2] | 0)) {
     $j$3$lcssa = $j$4;
     break;
    } else $j$381 = $j$4;
   }
  } else $j$3$lcssa = 0;
  HEAP32[$190 >> 2] = $j$3$lcssa;
  $324 = HEAP32[$0 >> 2] | 0;
  L120 : do if (($324 | 0) > 0) {
   $386 = $324;
   $i$373 = 0;
   while (1) {
    $326 = $arHandle + 48 + ($i$373 << 8) | 0;
    $328 = HEAP32[$arHandle + 48 + ($i$373 << 8) + 4 >> 2] | 0;
    if (($328 | 0) >= 0) {
     $330 = HEAP32[$190 >> 2] | 0;
     L125 : do if (($330 | 0) > 0) {
      $j$568 = 0;
      while (1) {
       if ((HEAP32[$arHandle + 4818304 + ($j$568 * 264 | 0) + 4 >> 2] | 0) == ($328 | 0)) {
        $j$5$lcssa = $j$568;
        break L125;
       }
       $335 = $j$568 + 1 | 0;
       if (($335 | 0) < ($330 | 0)) $j$568 = $335; else {
        $j$5$lcssa = $335;
        break;
       }
      }
     } else $j$5$lcssa = 0; while (0);
     if (($j$5$lcssa | 0) == ($330 | 0)) {
      if (($330 | 0) == 60) {
       $$lcssa = $386;
       break L120;
      }
      HEAP32[$190 >> 2] = $330 + 1;
     }
     _memcpy($arHandle + 4818304 + ($j$5$lcssa * 264 | 0) | 0, $326 | 0, 256) | 0;
     HEAP32[$arHandle + 4818304 + ($j$5$lcssa * 264 | 0) + 256 >> 2] = 1;
    }
    $i$373 = $i$373 + 1 | 0;
    $343 = HEAP32[$0 >> 2] | 0;
    if (($i$373 | 0) >= ($343 | 0)) {
     $$lcssa = $343;
     break;
    } else $386 = $343;
   }
  } else $$lcssa = $324; while (0);
  if ((HEAP32[$187 >> 2] | 0) == 2) $$0 = 0; else if ((HEAP32[$190 >> 2] | 0) > 0) {
   $353 = $$lcssa;
   $i$467 = 0;
   while (1) {
    $350 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 56 | 0;
    $351 = $arHandle + 4818304 + ($i$467 * 264 | 0) + 64 | 0;
    L139 : do if (($353 | 0) > 0) {
     $355 = +(HEAP32[$arHandle + 4818304 + ($i$467 * 264 | 0) >> 2] | 0);
     $j$663 = 0;
     while (1) {
      $358 = +(HEAP32[$arHandle + 48 + ($j$663 << 8) >> 2] | 0);
      $359 = $355 / $358;
      if (!($359 < .7 | $359 > 1.43)) {
       $365 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 56 >> 3] - +HEAPF64[$350 >> 3];
       $370 = +HEAPF64[$arHandle + 48 + ($j$663 << 8) + 64 >> 3] - +HEAPF64[$351 >> 3];
       if (($365 * $365 + $370 * $370) / $358 < .5) {
        $j$6$lcssa = $j$663;
        break L139;
       }
      }
      $375 = $j$663 + 1 | 0;
      if (($375 | 0) < ($353 | 0)) $j$663 = $375; else {
       $j$6$lcssa = $375;
       break;
      }
     }
    } else $j$6$lcssa = 0; while (0);
    if (($j$6$lcssa | 0) == ($353 | 0)) {
     _memcpy($arHandle + 48 + ($353 << 8) | 0, $arHandle + 4818304 + ($i$467 * 264 | 0) | 0, 256) | 0;
     $381 = (HEAP32[$0 >> 2] | 0) + 1 | 0;
     HEAP32[$0 >> 2] = $381;
     $387 = $381;
    } else $387 = $353;
    $i$467 = $i$467 + 1 | 0;
    if (($i$467 | 0) >= (HEAP32[$190 >> 2] | 0)) {
     $$0 = 0;
     break;
    } else $353 = $387;
   }
  } else $$0 = 0;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$19 = 0, $$pre = 0, $$pre$phi80Z2D = 0, $$pre$phi82Z2D = 0, $$pre$phi84Z2D = 0, $0 = 0, $1 = 0, $107 = 0, $108 = 0, $111 = 0, $113 = 0, $114 = 0, $115 = 0, $117 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $13 = 0, $130 = 0, $134 = 0, $136 = 0, $146 = 0, $148 = 0, $15 = 0, $150 = 0, $151 = 0, $159 = 0, $160 = 0, $161 = 0, $162 = 0, $165 = 0, $167 = 0, $177 = 0, $180 = 0, $181 = 0, $183 = 0, $184 = 0, $185 = 0, $187 = 0, $188 = 0, $19 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $201 = 0, $205 = 0, $207 = 0, $217 = 0, $221 = 0, $222 = 0, $225 = 0, $226 = 0, $227 = 0, $230 = 0, $233 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $246 = 0, $250 = 0, $252 = 0, $261 = 0, $262 = 0, $265 = 0, $267 = 0, $268 = 0, $269 = 0, $271 = 0, $279 = 0, $280 = 0, $281 = 0, $282 = 0, $284 = 0, $288 = 0, $290 = 0, $3 = 0, $30 = 0, $33 = 0, $34 = 0, $37 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $53 = 0, $55 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $71 = 0, $72 = 0, $73 = 0, $76 = 0, $79 = 0, $87 = 0, $88 = 0, $89 = 0, $90 = 0, $92 = 0, $96 = 0, $98 = 0, $args = 0, $args3 = 0, $global$0$off0 = 0, $s = 0, $s1 = 0, $s4 = 0, $s5 = 0, $s6 = 0, $t$0 = 0, $t$1$lcssa = 0, $t$1$ph = 0, $t$1107 = 0, $t$2 = 0, $t$3$lcssa = 0, $t$3110 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 144 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $args = sp + 132 | 0;
 $s = sp + 120 | 0;
 $0 = sp + 108 | 0;
 $s1 = sp + 96 | 0;
 $1 = sp + 84 | 0;
 $args3 = sp + 72 | 0;
 $s4 = sp + 60 | 0;
 $2 = sp + 48 | 0;
 $s5 = sp + 36 | 0;
 $3 = sp + 24 | 0;
 $s6 = sp + 12 | 0;
 $4 = sp;
 $5 = $last;
 L1 : do if (($5 - $first | 0) > 2) {
  if ((HEAP8[$first >> 0] | 0) == 103) {
   $13 = (HEAP8[$first + 1 >> 0] | 0) == 115;
   $global$0$off0 = $13;
   $t$0 = $13 ? $first + 2 | 0 : $first;
  } else {
   $global$0$off0 = 0;
   $t$0 = $first;
  }
  $15 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0;
  if (($15 | 0) != ($t$0 | 0)) {
   if (!$global$0$off0) {
    $$19 = $15;
    break;
   }
   $19 = HEAP32[$db + 4 >> 2] | 0;
   if ((HEAP32[$db >> 2] | 0) == ($19 | 0)) {
    $$19 = $first;
    break;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($19 + -24 | 0, 0, 12902) | 0;
   $$19 = $15;
   break;
  }
  if (($5 - $t$0 | 0) > 2) if ((HEAP8[$t$0 >> 0] | 0) == 115) if ((HEAP8[$t$0 + 1 >> 0] | 0) == 114) {
   $30 = $t$0 + 2 | 0;
   if ((HEAP8[$30 >> 0] | 0) == 78) {
    $33 = $t$0 + 3 | 0;
    $34 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($33, $last, $db) | 0;
    if (($34 | 0) == ($33 | 0) | ($34 | 0) == ($last | 0)) {
     $$19 = $first;
     break;
    }
    $37 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($34, $last, $db) | 0;
    $$pre = $db + 4 | 0;
    do if (($37 | 0) == ($34 | 0)) {
     $$pre$phi80Z2D = $db;
     $t$1$ph = $34;
    } else {
     $39 = HEAP32[$$pre >> 2] | 0;
     if ((($39 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      $$19 = $first;
      break L1;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $39 + -24 | 0);
     $47 = HEAP32[$$pre >> 2] | 0;
     $48 = $47 + -24 | 0;
     $50 = $47;
     do {
      $49 = $50 + -24 | 0;
      HEAP32[$$pre >> 2] = $49;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($49);
      $50 = HEAP32[$$pre >> 2] | 0;
     } while (($50 | 0) != ($48 | 0));
     $53 = HEAP8[$args >> 0] | 0;
     $55 = ($53 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($47 + -48 | 0, $55 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $55 ? ($53 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;
     if (($37 | 0) != ($last | 0)) {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
      $$pre$phi80Z2D = $db;
      $t$1$ph = $37;
      break;
     }
     $66 = HEAP32[$$pre >> 2] | 0;
     $67 = $66 + -24 | 0;
     $69 = $66;
     do {
      $68 = $69 + -24 | 0;
      HEAP32[$$pre >> 2] = $68;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($68);
      $69 = HEAP32[$$pre >> 2] | 0;
     } while (($69 | 0) != ($67 | 0));
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
     $$19 = $first;
     break L1;
    } while (0);
    $71 = $0 + 8 | 0;
    $72 = $0 + 1 | 0;
    $73 = $0 + 4 | 0;
    if ((HEAP8[$t$1$ph >> 0] | 0) == 69) $t$1$lcssa = $t$1$ph; else {
     $t$1107 = $t$1$ph;
     while (1) {
      $76 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$1107, $last, $db) | 0;
      if (($76 | 0) == ($t$1107 | 0) | ($76 | 0) == ($last | 0)) {
       $$19 = $first;
       break L1;
      }
      $79 = HEAP32[$$pre >> 2] | 0;
      if ((($79 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       $$19 = $first;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s, $79 + -24 | 0);
      $87 = HEAP32[$$pre >> 2] | 0;
      $88 = $87 + -24 | 0;
      $90 = $87;
      do {
       $89 = $90 + -24 | 0;
       HEAP32[$$pre >> 2] = $89;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($89);
       $90 = HEAP32[$$pre >> 2] | 0;
      } while (($90 | 0) != ($88 | 0));
      $92 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s, 0, 12902) | 0;
      HEAP32[$0 >> 2] = HEAP32[$92 >> 2];
      HEAP32[$0 + 4 >> 2] = HEAP32[$92 + 4 >> 2];
      HEAP32[$0 + 8 >> 2] = HEAP32[$92 + 8 >> 2];
      HEAP32[$92 >> 2] = 0;
      HEAP32[$92 + 4 >> 2] = 0;
      HEAP32[$92 + 8 >> 2] = 0;
      $96 = HEAP8[$0 >> 0] | 0;
      $98 = ($96 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($87 + -48 | 0, $98 ? $72 : HEAP32[$71 >> 2] | 0, $98 ? ($96 & 255) >>> 1 : HEAP32[$73 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s);
      if ((HEAP8[$76 >> 0] | 0) == 69) {
       $t$1$lcssa = $76;
       break;
      } else $t$1107 = $76;
     }
    }
    $107 = $t$1$lcssa + 1 | 0;
    $108 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($107, $last, $db) | 0;
    if (($108 | 0) == ($107 | 0)) {
     $111 = HEAP32[$$pre >> 2] | 0;
     if ((HEAP32[$$pre$phi80Z2D >> 2] | 0) == ($111 | 0)) {
      $$19 = $first;
      break;
     }
     $113 = $111 + -24 | 0;
     $115 = $111;
     while (1) {
      $114 = $115 + -24 | 0;
      HEAP32[$$pre >> 2] = $114;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($114);
      $115 = HEAP32[$$pre >> 2] | 0;
      if (($115 | 0) == ($113 | 0)) {
       $$19 = $first;
       break L1;
      }
     }
    }
    $117 = HEAP32[$$pre >> 2] | 0;
    if ((($117 - (HEAP32[$$pre$phi80Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     $$19 = $first;
     break;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s1, $117 + -24 | 0);
    $125 = HEAP32[$$pre >> 2] | 0;
    $126 = $125 + -24 | 0;
    $128 = $125;
    do {
     $127 = $128 + -24 | 0;
     HEAP32[$$pre >> 2] = $127;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($127);
     $128 = HEAP32[$$pre >> 2] | 0;
    } while (($128 | 0) != ($126 | 0));
    $130 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s1, 0, 12902) | 0;
    HEAP32[$1 >> 2] = HEAP32[$130 >> 2];
    HEAP32[$1 + 4 >> 2] = HEAP32[$130 + 4 >> 2];
    HEAP32[$1 + 8 >> 2] = HEAP32[$130 + 8 >> 2];
    HEAP32[$130 >> 2] = 0;
    HEAP32[$130 + 4 >> 2] = 0;
    HEAP32[$130 + 8 >> 2] = 0;
    $134 = HEAP8[$1 >> 0] | 0;
    $136 = ($134 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($125 + -48 | 0, $136 ? $1 + 1 | 0 : HEAP32[$1 + 8 >> 2] | 0, $136 ? ($134 & 255) >>> 1 : HEAP32[$1 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s1);
    $$19 = $108;
    break;
   }
   $146 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0;
   if (($146 | 0) != ($30 | 0)) {
    $148 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($146, $last, $db) | 0;
    if (($148 | 0) == ($146 | 0)) $t$2 = $146; else {
     $150 = $db + 4 | 0;
     $151 = HEAP32[$150 >> 2] | 0;
     if ((($151 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
      $$19 = $first;
      break;
     }
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $151 + -24 | 0);
     $159 = HEAP32[$150 >> 2] | 0;
     $160 = $159 + -24 | 0;
     $162 = $159;
     do {
      $161 = $162 + -24 | 0;
      HEAP32[$150 >> 2] = $161;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($161);
      $162 = HEAP32[$150 >> 2] | 0;
     } while (($162 | 0) != ($160 | 0));
     $165 = HEAP8[$args3 >> 0] | 0;
     $167 = ($165 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($159 + -48 | 0, $167 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $167 ? ($165 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3);
     $t$2 = $148;
    }
    $177 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($t$2, $last, $db) | 0;
    if (($177 | 0) == ($t$2 | 0)) {
     $180 = $db + 4 | 0;
     $181 = HEAP32[$180 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($181 | 0)) {
      $$19 = $first;
      break;
     }
     $183 = $181 + -24 | 0;
     $185 = $181;
     while (1) {
      $184 = $185 + -24 | 0;
      HEAP32[$180 >> 2] = $184;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($184);
      $185 = HEAP32[$180 >> 2] | 0;
      if (($185 | 0) == ($183 | 0)) {
       $$19 = $first;
       break L1;
      }
     }
    }
    $187 = $db + 4 | 0;
    $188 = HEAP32[$187 >> 2] | 0;
    if ((($188 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
     $$19 = $first;
     break;
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s4, $188 + -24 | 0);
    $196 = HEAP32[$187 >> 2] | 0;
    $197 = $196 + -24 | 0;
    $199 = $196;
    do {
     $198 = $199 + -24 | 0;
     HEAP32[$187 >> 2] = $198;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($198);
     $199 = HEAP32[$187 >> 2] | 0;
    } while (($199 | 0) != ($197 | 0));
    $201 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s4, 0, 12902) | 0;
    HEAP32[$2 >> 2] = HEAP32[$201 >> 2];
    HEAP32[$2 + 4 >> 2] = HEAP32[$201 + 4 >> 2];
    HEAP32[$2 + 8 >> 2] = HEAP32[$201 + 8 >> 2];
    HEAP32[$201 >> 2] = 0;
    HEAP32[$201 + 4 >> 2] = 0;
    HEAP32[$201 + 8 >> 2] = 0;
    $205 = HEAP8[$2 >> 0] | 0;
    $207 = ($205 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($196 + -48 | 0, $207 ? $2 + 1 | 0 : HEAP32[$2 + 8 >> 2] | 0, $207 ? ($205 & 255) >>> 1 : HEAP32[$2 + 4 >> 2] | 0) | 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s4);
    $$19 = $177;
    break;
   }
   $217 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($30, $last, $db) | 0;
   if (($217 | 0) == ($30 | 0) | ($217 | 0) == ($last | 0)) $$19 = $first; else {
    if ($global$0$off0) {
     $221 = $db + 4 | 0;
     $222 = HEAP32[$221 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($222 | 0)) {
      $$19 = $first;
      break;
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($222 + -24 | 0, 0, 12902) | 0;
     $$pre$phi82Z2D = $221;
     $$pre$phi84Z2D = $db;
    } else {
     $$pre$phi82Z2D = $db + 4 | 0;
     $$pre$phi84Z2D = $db;
    }
    $225 = $3 + 8 | 0;
    $226 = $3 + 1 | 0;
    $227 = $3 + 4 | 0;
    if ((HEAP8[$217 >> 0] | 0) == 69) $t$3$lcssa = $217; else {
     $t$3110 = $217;
     while (1) {
      $230 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($t$3110, $last, $db) | 0;
      if (($230 | 0) == ($t$3110 | 0) | ($230 | 0) == ($last | 0)) {
       $$19 = $first;
       break L1;
      }
      $233 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
      if ((($233 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       $$19 = $first;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s5, $233 + -24 | 0);
      $241 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
      $242 = $241 + -24 | 0;
      $244 = $241;
      do {
       $243 = $244 + -24 | 0;
       HEAP32[$$pre$phi82Z2D >> 2] = $243;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($243);
       $244 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
      } while (($244 | 0) != ($242 | 0));
      $246 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s5, 0, 12902) | 0;
      HEAP32[$3 >> 2] = HEAP32[$246 >> 2];
      HEAP32[$3 + 4 >> 2] = HEAP32[$246 + 4 >> 2];
      HEAP32[$3 + 8 >> 2] = HEAP32[$246 + 8 >> 2];
      HEAP32[$246 >> 2] = 0;
      HEAP32[$246 + 4 >> 2] = 0;
      HEAP32[$246 + 8 >> 2] = 0;
      $250 = HEAP8[$3 >> 0] | 0;
      $252 = ($250 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($241 + -48 | 0, $252 ? $226 : HEAP32[$225 >> 2] | 0, $252 ? ($250 & 255) >>> 1 : HEAP32[$227 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s5);
      if ((HEAP8[$230 >> 0] | 0) == 69) {
       $t$3$lcssa = $230;
       break;
      } else $t$3110 = $230;
     }
    }
    $261 = $t$3$lcssa + 1 | 0;
    $262 = __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($261, $last, $db) | 0;
    if (($262 | 0) == ($261 | 0)) {
     $265 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
     if ((HEAP32[$$pre$phi84Z2D >> 2] | 0) == ($265 | 0)) {
      $$19 = $first;
      break;
     }
     $267 = $265 + -24 | 0;
     $269 = $265;
     while (1) {
      $268 = $269 + -24 | 0;
      HEAP32[$$pre$phi82Z2D >> 2] = $268;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($268);
      $269 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
      if (($269 | 0) == ($267 | 0)) {
       $$19 = $first;
       break L1;
      }
     }
    }
    $271 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
    if ((($271 - (HEAP32[$$pre$phi84Z2D >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$19 = $first; else {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($s6, $271 + -24 | 0);
     $279 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
     $280 = $279 + -24 | 0;
     $282 = $279;
     do {
      $281 = $282 + -24 | 0;
      HEAP32[$$pre$phi82Z2D >> 2] = $281;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($281);
      $282 = HEAP32[$$pre$phi82Z2D >> 2] | 0;
     } while (($282 | 0) != ($280 | 0));
     $284 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($s6, 0, 12902) | 0;
     HEAP32[$4 >> 2] = HEAP32[$284 >> 2];
     HEAP32[$4 + 4 >> 2] = HEAP32[$284 + 4 >> 2];
     HEAP32[$4 + 8 >> 2] = HEAP32[$284 + 8 >> 2];
     HEAP32[$284 >> 2] = 0;
     HEAP32[$284 + 4 >> 2] = 0;
     HEAP32[$284 + 8 >> 2] = 0;
     $288 = HEAP8[$4 >> 0] | 0;
     $290 = ($288 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($279 + -48 | 0, $290 ? $4 + 1 | 0 : HEAP32[$4 + 8 >> 2] | 0, $290 ? ($288 & 255) >>> 1 : HEAP32[$4 + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($s6);
     $$19 = $262;
    }
   }
  } else $$19 = $first; else $$19 = $first; else $$19 = $first;
 } else $$19 = $first; while (0);
 STACKTOP = sp;
 return $$19 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i12 = 0, $$0$i$i$i17 = 0, $$0$i$i$i22 = 0, $$0$i$i$i27 = 0, $$0$i$i$i32 = 0, $$0$i$i$i37 = 0, $$0$i$i$i40 = 0, $$lcssa98 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $110 = 0, $112 = 0, $115 = 0, $116 = 0, $119 = 0, $12 = 0, $120 = 0, $122 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $136 = 0, $138 = 0, $14 = 0, $141 = 0, $142 = 0, $145 = 0, $146 = 0, $148 = 0, $15 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $16 = 0, $162 = 0, $164 = 0, $167 = 0, $168 = 0, $172 = 0, $176 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $184 = 0, $187 = 0, $195 = 0, $196 = 0, $197 = 0, $2 = 0, $200 = 0, $203 = 0, $212 = 0, $213 = 0, $214 = 0, $217 = 0, $218 = 0, $220 = 0, $221 = 0, $223 = 0, $224 = 0, $229 = 0, $233 = 0, $240 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $248 = 0, $25 = 0, $251 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $267 = 0, $27 = 0, $28 = 0, $3 = 0, $32 = 0, $34 = 0, $37 = 0, $38 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $58 = 0, $60 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $84 = 0, $86 = 0, $89 = 0, $90 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i38 = 0, $isdigittmp5 = 0, $isdigittmp9 = 0, $sub$179 = 0, $sub$179$lcssa = 0, $t$080 = 0, $t$080$lcssa = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i38 = sp + 144 | 0;
 $0 = sp + 120 | 0;
 $1 = sp + 96 | 0;
 $2 = sp + 72 | 0;
 $3 = sp + 48 | 0;
 $4 = sp + 24 | 0;
 $5 = sp;
 L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 83) {
  $12 = $first + 1 | 0;
  $13 = HEAP8[$12 >> 0] | 0;
  $14 = $13 << 24 >> 24;
  switch ($14 | 0) {
  case 97:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($0, 12813);
    $15 = $db + 4 | 0;
    $16 = HEAP32[$15 >> 2] | 0;
    $18 = HEAP32[$db + 8 >> 2] | 0;
    if ($16 >>> 0 < $18 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($16, $0);
     HEAP32[$15 >> 2] = (HEAP32[$15 >> 2] | 0) + 24;
    } else {
     $25 = HEAP32[$db >> 2] | 0;
     $26 = $16 - $25 | 0;
     $27 = ($26 | 0) / 24 | 0;
     $28 = $27 + 1 | 0;
     if (($26 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $32 = ($18 - $25 | 0) / 24 | 0;
     if ($32 >>> 0 < 1073741823) {
      $34 = $32 << 1;
      $$0$i$i$i = $34 >>> 0 < $28 >>> 0 ? $28 : $34;
     } else $$0$i$i$i = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i, $27, $db + 12 | 0);
     $37 = $__v$i$i38 + 8 | 0;
     $38 = HEAP32[$37 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($38, $0);
     HEAP32[$37 >> 2] = $38 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 98:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($1, 12828);
    $41 = $db + 4 | 0;
    $42 = HEAP32[$41 >> 2] | 0;
    $44 = HEAP32[$db + 8 >> 2] | 0;
    if ($42 >>> 0 < $44 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($42, $1);
     HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 24;
    } else {
     $51 = HEAP32[$db >> 2] | 0;
     $52 = $42 - $51 | 0;
     $53 = ($52 | 0) / 24 | 0;
     $54 = $53 + 1 | 0;
     if (($52 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $58 = ($44 - $51 | 0) / 24 | 0;
     if ($58 >>> 0 < 1073741823) {
      $60 = $58 << 1;
      $$0$i$i$i12 = $60 >>> 0 < $54 >>> 0 ? $54 : $60;
     } else $$0$i$i$i12 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i12, $53, $db + 12 | 0);
     $63 = $__v$i$i38 + 8 | 0;
     $64 = HEAP32[$63 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($64, $1);
     HEAP32[$63 >> 2] = $64 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 115:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($2, 12846);
    $67 = $db + 4 | 0;
    $68 = HEAP32[$67 >> 2] | 0;
    $70 = HEAP32[$db + 8 >> 2] | 0;
    if ($68 >>> 0 < $70 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($68, $2);
     HEAP32[$67 >> 2] = (HEAP32[$67 >> 2] | 0) + 24;
    } else {
     $77 = HEAP32[$db >> 2] | 0;
     $78 = $68 - $77 | 0;
     $79 = ($78 | 0) / 24 | 0;
     $80 = $79 + 1 | 0;
     if (($78 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $84 = ($70 - $77 | 0) / 24 | 0;
     if ($84 >>> 0 < 1073741823) {
      $86 = $84 << 1;
      $$0$i$i$i17 = $86 >>> 0 < $80 >>> 0 ? $80 : $86;
     } else $$0$i$i$i17 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i17, $79, $db + 12 | 0);
     $89 = $__v$i$i38 + 8 | 0;
     $90 = HEAP32[$89 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($90, $2);
     HEAP32[$89 >> 2] = $90 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 105:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($3, 12858);
    $93 = $db + 4 | 0;
    $94 = HEAP32[$93 >> 2] | 0;
    $96 = HEAP32[$db + 8 >> 2] | 0;
    if ($94 >>> 0 < $96 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($94, $3);
     HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 24;
    } else {
     $103 = HEAP32[$db >> 2] | 0;
     $104 = $94 - $103 | 0;
     $105 = ($104 | 0) / 24 | 0;
     $106 = $105 + 1 | 0;
     if (($104 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $110 = ($96 - $103 | 0) / 24 | 0;
     if ($110 >>> 0 < 1073741823) {
      $112 = $110 << 1;
      $$0$i$i$i22 = $112 >>> 0 < $106 >>> 0 ? $106 : $112;
     } else $$0$i$i$i22 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i22, $105, $db + 12 | 0);
     $115 = $__v$i$i38 + 8 | 0;
     $116 = HEAP32[$115 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($116, $3);
     HEAP32[$115 >> 2] = $116 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 111:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($4, 12871);
    $119 = $db + 4 | 0;
    $120 = HEAP32[$119 >> 2] | 0;
    $122 = HEAP32[$db + 8 >> 2] | 0;
    if ($120 >>> 0 < $122 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($120, $4);
     HEAP32[$119 >> 2] = (HEAP32[$119 >> 2] | 0) + 24;
    } else {
     $129 = HEAP32[$db >> 2] | 0;
     $130 = $120 - $129 | 0;
     $131 = ($130 | 0) / 24 | 0;
     $132 = $131 + 1 | 0;
     if (($130 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $136 = ($122 - $129 | 0) / 24 | 0;
     if ($136 >>> 0 < 1073741823) {
      $138 = $136 << 1;
      $$0$i$i$i27 = $138 >>> 0 < $132 >>> 0 ? $132 : $138;
     } else $$0$i$i$i27 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i27, $131, $db + 12 | 0);
     $141 = $__v$i$i38 + 8 | 0;
     $142 = HEAP32[$141 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($142, $4);
     HEAP32[$141 >> 2] = $142 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($4);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 100:
   {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($5, 12884);
    $145 = $db + 4 | 0;
    $146 = HEAP32[$145 >> 2] | 0;
    $148 = HEAP32[$db + 8 >> 2] | 0;
    if ($146 >>> 0 < $148 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($146, $5);
     HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 24;
    } else {
     $155 = HEAP32[$db >> 2] | 0;
     $156 = $146 - $155 | 0;
     $157 = ($156 | 0) / 24 | 0;
     $158 = $157 + 1 | 0;
     if (($156 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $162 = ($148 - $155 | 0) / 24 | 0;
     if ($162 >>> 0 < 1073741823) {
      $164 = $162 << 1;
      $$0$i$i$i32 = $164 >>> 0 < $158 >>> 0 ? $158 : $164;
     } else $$0$i$i$i32 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i32, $157, $db + 12 | 0);
     $167 = $__v$i$i38 + 8 | 0;
     $168 = HEAP32[$167 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $5);
     HEAP32[$167 >> 2] = $168 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  case 95:
   {
    $172 = HEAP32[$db + 16 >> 2] | 0;
    if (($172 | 0) == (HEAP32[$db + 20 >> 2] | 0)) {
     $$0 = $first;
     break L1;
    }
    $176 = HEAP32[$172 >> 2] | 0;
    $178 = HEAP32[$172 + 4 >> 2] | 0;
    $179 = $db + 4 | 0;
    $180 = $db + 8 | 0;
    $181 = $db + 12 | 0;
    $182 = $__v$i$i38 + 8 | 0;
    L100 : do if (($176 | 0) != ($178 | 0)) {
     $187 = $176;
     while (1) {
      $184 = HEAP32[$179 >> 2] | 0;
      if (($184 | 0) == (HEAP32[$180 >> 2] | 0)) {
       $195 = $184 - (HEAP32[$db >> 2] | 0) | 0;
       $196 = ($195 | 0) / 24 | 0;
       $197 = $196 + 1 | 0;
       if (($195 | 0) < -24) break;
       if ($196 >>> 0 < 1073741823) {
        $200 = $196 << 1;
        $$0$i$i$i37 = $200 >>> 0 < $197 >>> 0 ? $197 : $200;
       } else $$0$i$i$i37 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i37, $196, $181);
       $203 = HEAP32[$182 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203, $187);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($203 + 12 | 0, $187 + 12 | 0);
       HEAP32[$182 >> 2] = $203 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184, $187);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($184 + 12 | 0, $187 + 12 | 0);
       HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 24;
      }
      $187 = $187 + 24 | 0;
      if (($187 | 0) == ($178 | 0)) break L100;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    } while (0);
    $$0 = $first + 2 | 0;
    break L1;
    break;
   }
  default:
   {
    if (($14 + -48 | 0) >>> 0 < 10) $213 = $13; else {
     if (!(_isupper($14) | 0)) {
      $$0 = $first;
      break L1;
     }
     $213 = HEAP8[$12 >> 0] | 0;
    }
    $212 = $213 << 24 >> 24;
    $isdigittmp5 = $212 + -48 | 0;
    $214 = $first + 2 | 0;
    if (($214 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    $sub$179 = $isdigittmp5 >>> 0 < 10 ? $isdigittmp5 : $212 + -55 | 0;
    $t$080 = $214;
    while (1) {
     $217 = HEAP8[$t$080 >> 0] | 0;
     $218 = $217 << 24 >> 24;
     if (($218 + -48 | 0) >>> 0 < 10) $224 = $217; else {
      $220 = (_isupper($218) | 0) == 0;
      $221 = HEAP8[$t$080 >> 0] | 0;
      if ($220) {
       $$lcssa98 = $221;
       $sub$179$lcssa = $sub$179;
       $t$080$lcssa = $t$080;
       break;
      } else $224 = $221;
     }
     $223 = $224 << 24 >> 24;
     $isdigittmp9 = $223 + -48 | 0;
     $t$080 = $t$080 + 1 | 0;
     if (($t$080 | 0) == ($last | 0)) {
      $$0 = $first;
      break L1;
     } else $sub$179 = ($isdigittmp9 >>> 0 < 10 ? $isdigittmp9 : $223 + -55 | 0) + ($sub$179 * 36 | 0) | 0;
    }
    if ($$lcssa98 << 24 >> 24 != 95) {
     $$0 = $first;
     break L1;
    }
    $229 = $sub$179$lcssa + 1 | 0;
    $233 = HEAP32[$db + 16 >> 2] | 0;
    if ($229 >>> 0 >= (HEAP32[$db + 20 >> 2] | 0) - $233 >> 4 >>> 0) {
     $$0 = $first;
     break L1;
    }
    $240 = HEAP32[$233 + ($229 << 4) >> 2] | 0;
    $242 = HEAP32[$233 + ($229 << 4) + 4 >> 2] | 0;
    $243 = $db + 4 | 0;
    $244 = $db + 8 | 0;
    $245 = $db + 12 | 0;
    $246 = $__v$i$i38 + 8 | 0;
    L19 : do if (($240 | 0) != ($242 | 0)) {
     $251 = $240;
     while (1) {
      $248 = HEAP32[$243 >> 2] | 0;
      if (($248 | 0) == (HEAP32[$244 >> 2] | 0)) {
       $259 = $248 - (HEAP32[$db >> 2] | 0) | 0;
       $260 = ($259 | 0) / 24 | 0;
       $261 = $260 + 1 | 0;
       if (($259 | 0) < -24) break;
       if ($260 >>> 0 < 1073741823) {
        $264 = $260 << 1;
        $$0$i$i$i40 = $264 >>> 0 < $261 >>> 0 ? $261 : $264;
       } else $$0$i$i$i40 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i38, $$0$i$i$i40, $260, $245);
       $267 = HEAP32[$246 >> 2] | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267, $251);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($267 + 12 | 0, $251 + 12 | 0);
       HEAP32[$246 >> 2] = $267 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i38);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i38);
      } else {
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248, $251);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($248 + 12 | 0, $251 + 12 | 0);
       HEAP32[$243 >> 2] = (HEAP32[$243 >> 2] | 0) + 24;
      }
      $251 = $251 + 24 | 0;
      if (($251 | 0) == ($242 | 0)) break L19;
     }
     __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    } while (0);
    $$0 = $t$080$lcssa + 1 | 0;
    break L1;
   }
  }
 } else $$0 = $first; else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _icpGetInitXw2Xc_from_PlanarData($matXc2U, $screenCoord, $worldCoord, $num, $initMatXw2Xc) {
 $matXc2U = $matXc2U | 0;
 $screenCoord = $screenCoord | 0;
 $worldCoord = $worldCoord | 0;
 $num = $num | 0;
 $initMatXw2Xc = $initMatXw2Xc | 0;
 var $$$10$i = 0.0, $$$16$i = 0.0, $$$18$i = 0.0, $$$8$i = 0.0, $$0 = 0, $$10$$i = 0.0, $$10$i = 0.0, $$15$i = 0.0, $$16$$i = 0.0, $$16$i = 0.0, $$17$i = 0.0, $$18$$i = 0.0, $$18$i = 0.0, $$7$i = 0.0, $$7$i1 = 0.0, $$7$i2 = 0.0, $$8$$i = 0.0, $$8$i = 0.0, $$9$i = 0.0, $102 = 0, $104 = 0, $106 = 0, $11 = 0, $110 = 0, $112 = 0, $114 = 0.0, $118 = 0.0, $121 = 0.0, $122 = 0.0, $125 = 0.0, $129 = 0.0, $132 = 0.0, $133 = 0.0, $135 = 0.0, $140 = 0.0, $147 = 0.0, $151 = 0.0, $157 = 0.0, $163 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $175 = 0.0, $177 = 0.0, $178 = 0.0, $180 = 0.0, $191 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0.0, $197 = 0.0, $199 = 0.0, $200 = 0.0, $203 = 0.0, $209 = 0.0, $211 = 0.0, $212 = 0.0, $213 = 0.0, $218 = 0.0, $226 = 0.0, $234 = 0, $235 = 0.0, $236 = 0.0, $237 = 0.0, $242 = 0.0, $244 = 0.0, $248 = 0.0, $249 = 0.0, $251 = 0.0, $255 = 0.0, $258 = 0.0, $265 = 0.0, $268 = 0.0, $270 = 0.0, $272 = 0.0, $274 = 0.0, $276 = 0.0, $278 = 0.0, $280 = 0.0, $281 = 0, $283 = 0, $291 = 0, $292 = 0.0, $293 = 0.0, $294 = 0.0, $299 = 0.0, $301 = 0.0, $305 = 0.0, $306 = 0.0, $308 = 0.0, $312 = 0.0, $315 = 0.0, $32 = 0, $322 = 0.0, $325 = 0.0, $327 = 0.0, $329 = 0.0, $33 = 0, $331 = 0.0, $333 = 0.0, $335 = 0.0, $337 = 0.0, $338 = 0, $340 = 0, $345 = 0.0, $35 = 0, $352 = 0.0, $359 = 0.0, $366 = 0.0, $37 = 0, $377 = 0.0, $379 = 0.0, $38 = 0, $380 = 0.0, $381 = 0.0, $383 = 0.0, $385 = 0.0, $386 = 0.0, $389 = 0.0, $39 = 0, $395 = 0.0, $41 = 0, $43 = 0, $56 = 0, $83 = 0, $96 = 0, $cb$0$i = 0.0, $e1$0$i = 0.0, $e2$0$i = 0.0, $e3$0$i = 0.0, $e4$0$i = 0.0, $f$0$i = 0, $f$2$i = 0, $i$0 = 0, $i$15 = 0, $t$sroa$0$0 = 0.0, $t$sroa$6$0 = 0.0, $v1$sroa$0$0$i = 0.0, $v1$sroa$16$0$i = 0.0, $v1$sroa$31$0$i = 0.0, $v2$sroa$0$0$i = 0.0, $v2$sroa$16$0$i = 0.0, $v2$sroa$31$0$i = 0.0, $v3$sroa$0$0$i = 0.0, $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$0$2$i = 0.0, $v3$sroa$31$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$i = 0.0, $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = 0.0, $v3$sroa$31$2$i = 0.0, $v3$sroa$60$0$i = 0.0, $v3$sroa$60$0$v3$sroa$31$0$i = 0.0, $v3$sroa$60$3$i = 0.0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer11 = sp + 48 | 0;
 $vararg_buffer9 = sp + 40 | 0;
 $vararg_buffer7 = sp + 32 | 0;
 $vararg_buffer5 = sp + 24 | 0;
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 L1 : do if (($num | 0) < 4) $$0 = -1; else {
  $i$0 = 0;
  while (1) {
   if (($i$0 | 0) >= ($num | 0)) break;
   if (+HEAPF64[$worldCoord + ($i$0 * 24 | 0) + 16 >> 3] != 0.0) {
    $$0 = -1;
    break L1;
   } else $i$0 = $i$0 + 1 | 0;
  }
  if (+HEAPF64[$matXc2U >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 32 >> 3] != 0.0) $$0 = -1; else {
   $11 = $matXc2U + 40 | 0;
   if (+HEAPF64[$11 >> 3] == 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 64 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 72 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 80 >> 3] != 1.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 24 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 56 >> 3] != 0.0) $$0 = -1; else if (+HEAPF64[$matXc2U + 88 >> 3] != 0.0) $$0 = -1; else {
    $32 = $num << 1;
    $33 = _arMatrixAlloc($32, 8) | 0;
    if (!$33) {
     _arLog(3, 5124, $vararg_buffer);
     $$0 = -1;
     break;
    }
    $35 = _arMatrixAlloc($32, 1) | 0;
    if (!$35) {
     _arMatrixFree($33) | 0;
     _arLog(3, 5150, $vararg_buffer1);
     $$0 = -1;
     break;
    }
    if ($num) {
     $37 = HEAP32[$33 >> 2] | 0;
     $38 = HEAP32[$35 >> 2] | 0;
     $i$15 = 0;
     do {
      $39 = $worldCoord + ($i$15 * 24 | 0) | 0;
      $41 = $i$15 << 4;
      HEAPF64[$37 + ($41 << 3) >> 3] = +HEAPF64[$39 >> 3];
      $43 = $worldCoord + ($i$15 * 24 | 0) + 8 | 0;
      HEAPF64[$37 + (($41 | 1) << 3) >> 3] = +HEAPF64[$43 >> 3];
      HEAPF64[$37 + (($41 | 2) << 3) >> 3] = 1.0;
      HEAPF64[$37 + (($41 | 3) << 3) >> 3] = 0.0;
      HEAPF64[$37 + (($41 | 4) << 3) >> 3] = 0.0;
      HEAPF64[$37 + (($41 | 5) << 3) >> 3] = 0.0;
      $56 = $screenCoord + ($i$15 << 4) | 0;
      HEAPF64[$37 + (($41 | 6) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$56 >> 3]);
      HEAPF64[$37 + (($41 | 7) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$56 >> 3]);
      HEAPF64[$37 + (($41 | 8) << 3) >> 3] = 0.0;
      HEAPF64[$37 + (($41 | 9) << 3) >> 3] = 0.0;
      HEAPF64[$37 + (($41 | 10) << 3) >> 3] = 0.0;
      HEAPF64[$37 + (($41 | 11) << 3) >> 3] = +HEAPF64[$39 >> 3];
      HEAPF64[$37 + (($41 | 12) << 3) >> 3] = +HEAPF64[$43 >> 3];
      HEAPF64[$37 + (($41 | 13) << 3) >> 3] = 1.0;
      $83 = $screenCoord + ($i$15 << 4) + 8 | 0;
      HEAPF64[$37 + (($41 | 14) << 3) >> 3] = -(+HEAPF64[$39 >> 3] * +HEAPF64[$83 >> 3]);
      HEAPF64[$37 + (($41 | 15) << 3) >> 3] = -(+HEAPF64[$43 >> 3] * +HEAPF64[$83 >> 3]);
      $96 = $i$15 << 1;
      HEAPF64[$38 + ($96 << 3) >> 3] = +HEAPF64[$56 >> 3];
      HEAPF64[$38 + (($96 | 1) << 3) >> 3] = +HEAPF64[$83 >> 3];
      $i$15 = $i$15 + 1 | 0;
     } while (($i$15 | 0) != ($num | 0));
    }
    $102 = _arMatrixAllocTrans($33) | 0;
    if (!$102) {
     _arMatrixFree($33) | 0;
     _arMatrixFree($35) | 0;
     _arLog(3, 5176, $vararg_buffer3);
     $$0 = -1;
     break;
    }
    $104 = _arMatrixAllocMul($102, $33) | 0;
    if (!$104) {
     _arMatrixFree($33) | 0;
     _arMatrixFree($35) | 0;
     _arMatrixFree($102) | 0;
     _arLog(3, 5202, $vararg_buffer5);
     $$0 = -1;
     break;
    }
    $106 = _arMatrixAllocMul($102, $35) | 0;
    if (!$106) {
     _arMatrixFree($33) | 0;
     _arMatrixFree($35) | 0;
     _arMatrixFree($102) | 0;
     _arMatrixFree($104) | 0;
     _arLog(3, 5228, $vararg_buffer7);
     $$0 = -1;
     break;
    }
    if ((_arMatrixSelfInv($104) | 0) < 0) {
     _arMatrixFree($33) | 0;
     _arMatrixFree($35) | 0;
     _arMatrixFree($102) | 0;
     _arMatrixFree($104) | 0;
     _arMatrixFree($106) | 0;
     _arLog(3, 5254, $vararg_buffer9);
     $$0 = -1;
     break;
    }
    $110 = _arMatrixAllocMul($104, $106) | 0;
    if (!$110) {
     _arMatrixFree($33) | 0;
     _arMatrixFree($35) | 0;
     _arMatrixFree($102) | 0;
     _arMatrixFree($104) | 0;
     _arMatrixFree($106) | 0;
     _arLog(3, 5280, $vararg_buffer11);
     $$0 = -1;
     break;
    }
    $112 = HEAP32[$110 >> 2] | 0;
    $114 = +HEAPF64[$112 + 48 >> 3];
    $118 = +HEAPF64[$matXc2U + 48 >> 3];
    $121 = +HEAPF64[$11 >> 3];
    $122 = (+HEAPF64[$112 + 24 >> 3] - $114 * $118) / $121;
    $125 = +HEAPF64[$matXc2U + 16 >> 3];
    $129 = +HEAPF64[$matXc2U + 8 >> 3];
    $132 = +HEAPF64[$matXc2U >> 3];
    $133 = (+HEAPF64[$112 >> 3] - $114 * $125 - $122 * $129) / $132;
    $135 = +HEAPF64[$112 + 56 >> 3];
    $140 = (+HEAPF64[$112 + 32 >> 3] - $118 * $135) / $121;
    $147 = (+HEAPF64[$112 + 8 >> 3] - $125 * $135 - $129 * $140) / $132;
    $151 = (+HEAPF64[$112 + 40 >> 3] - $118) / $121;
    $157 = (+HEAPF64[$112 + 16 >> 3] - $125 - $129 * $151) / $132;
    _arMatrixFree($33) | 0;
    _arMatrixFree($35) | 0;
    _arMatrixFree($102) | 0;
    _arMatrixFree($104) | 0;
    _arMatrixFree($106) | 0;
    _arMatrixFree($110) | 0;
    $163 = +Math_sqrt(+($114 * $114 + ($122 * $122 + $133 * $133)));
    $169 = +Math_sqrt(+($135 * $135 + ($140 * $140 + $147 * $147)));
    $170 = $133 / $163;
    $171 = $122 / $163;
    $172 = $114 / $163;
    $173 = $147 / $169;
    $174 = $140 / $169;
    $175 = $135 / $169;
    $177 = ($163 + $169) * .5;
    $178 = $157 / $177;
    $180 = 1.0 / $177;
    if ($180 < 0.0) {
     $$7$i1 = -$171;
     $191 = -$175;
     $193 = -$174;
     $194 = -$172;
     $197 = -$173;
     $199 = -$170;
     $t$sroa$0$0 = -$178;
     $t$sroa$6$0 = -$180;
    } else {
     $$7$i1 = $171;
     $191 = $175;
     $193 = $174;
     $194 = $172;
     $197 = $173;
     $199 = $170;
     $t$sroa$0$0 = $178;
     $t$sroa$6$0 = $151 / $177;
    }
    $195 = $191 * $$7$i1 - $193 * $194;
    $200 = $197 * $194 - $191 * $199;
    $203 = $193 * $199 - $197 * $$7$i1;
    $209 = +Math_sqrt(+($203 * $203 + ($195 * $195 + $200 * $200)));
    do if ($209 == 0.0) {
     $$7$i2 = $$7$i1;
     $377 = $191;
     $379 = $193;
     $380 = $194;
     $383 = $197;
     $385 = $199;
    } else {
     $211 = $195 / $209;
     $212 = $200 / $209;
     $213 = $203 / $209;
     $218 = $191 * $194 + ($193 * $$7$i1 + $197 * $199);
     $cb$0$i = $218 < 0.0 ? -$218 : $218;
     $226 = (+Math_sqrt(+($cb$0$i + 1.0)) + +Math_sqrt(+(1.0 - $cb$0$i))) * .5;
     if ($199 * $212 - $$7$i1 * $211 != 0.0) {
      $f$0$i = 0;
      $v1$sroa$0$0$i = $199;
      $v1$sroa$16$0$i = $$7$i1;
      $v1$sroa$31$0$i = $194;
      $v3$sroa$0$0$i = $211;
      $v3$sroa$31$0$i = $212;
      $v3$sroa$60$0$i = $213;
     } else {
      $234 = $199 * $213 - $194 * $211 != 0.0;
      $f$0$i = $234 ? 1 : 2;
      $v1$sroa$0$0$i = $234 ? $199 : $194;
      $v1$sroa$16$0$i = $234 ? $194 : $$7$i1;
      $v1$sroa$31$0$i = $234 ? $$7$i1 : $199;
      $v3$sroa$0$0$i = $234 ? $211 : $213;
      $v3$sroa$31$0$i = $234 ? $213 : $212;
      $v3$sroa$60$0$i = $234 ? $212 : $211;
     }
     $235 = $v1$sroa$0$0$i * $v3$sroa$31$0$i;
     $236 = $v1$sroa$16$0$i * $v3$sroa$0$0$i;
     $237 = $235 - $236;
     if ($237 == 0.0) {
      $$7$i2 = $$7$i1;
      $377 = $191;
      $379 = $193;
      $380 = $194;
      $383 = $197;
      $385 = $199;
      break;
     }
     $242 = ($v1$sroa$16$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$31$0$i) / $237;
     $244 = $226 * $v3$sroa$31$0$i / $237;
     $248 = $236 - $235;
     $249 = ($v1$sroa$0$0$i * $v3$sroa$60$0$i - $v1$sroa$31$0$i * $v3$sroa$0$0$i) / $248;
     $251 = $226 * $v3$sroa$0$0$i / $248;
     $255 = $242 * $242 + $249 * $249 + 1.0;
     $258 = $242 * $244 + $249 * $251;
     $265 = $258 * $258 - $255 * ($244 * $244 + $251 * $251 + -1.0);
     if ($265 < 0.0) {
      $$7$i2 = $$7$i1;
      $377 = $191;
      $379 = $193;
      $380 = $194;
      $383 = $197;
      $385 = $199;
      break;
     }
     $268 = +Math_sqrt(+$265);
     $270 = ($268 - $258) / $255;
     $272 = $244 + $242 * $270;
     $274 = $251 + $249 * $270;
     $276 = (-$258 - $268) / $255;
     $278 = $244 + $242 * $276;
     $280 = $251 + $249 * $276;
     $281 = ($f$0$i | 0) == 1;
     $v3$sroa$31$0$v3$sroa$60$0$i = $281 ? $v3$sroa$31$0$i : $v3$sroa$60$0$i;
     $v3$sroa$60$0$v3$sroa$31$0$i = $281 ? $v3$sroa$60$0$i : $v3$sroa$31$0$i;
     $$7$i = $281 ? $270 : $274;
     $$8$i = $281 ? $274 : $270;
     $$9$i = $281 ? $276 : $280;
     $$10$i = $281 ? $280 : $276;
     $283 = ($f$0$i | 0) == 2 & ($281 ^ 1);
     $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i = $283 ? $v3$sroa$0$0$i : $v3$sroa$31$0$v3$sroa$60$0$i;
     $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i = $283 ? $v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$0$0$i;
     $$8$$i = $283 ? $$8$i : $272;
     $$$8$i = $283 ? $272 : $$8$i;
     $$10$$i = $283 ? $$10$i : $278;
     $$$10$i = $283 ? $278 : $$10$i;
     if ($197 * $v3$sroa$60$0$v3$sroa$31$0$i - $193 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0) {
      $f$2$i = 0;
      $v2$sroa$0$0$i = $197;
      $v2$sroa$16$0$i = $193;
      $v2$sroa$31$0$i = $191;
      $v3$sroa$0$2$i = $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i;
      $v3$sroa$31$2$i = $v3$sroa$60$0$v3$sroa$31$0$i;
      $v3$sroa$60$3$i = $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i;
     } else {
      $291 = $197 * $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i - $191 * $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i != 0.0;
      $f$2$i = $291 ? 1 : 2;
      $v2$sroa$0$0$i = $291 ? $197 : $191;
      $v2$sroa$16$0$i = $291 ? $191 : $193;
      $v2$sroa$31$0$i = $291 ? $193 : $197;
      $v3$sroa$0$2$i = $291 ? $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i : $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i;
      $v3$sroa$31$2$i = $291 ? $v3$sroa$0$0$v3$sroa$31$0$v3$sroa$60$0$i : $v3$sroa$60$0$v3$sroa$31$0$i;
      $v3$sroa$60$3$i = $291 ? $v3$sroa$60$0$v3$sroa$31$0$i : $v3$sroa$31$0$v3$sroa$60$0$v3$sroa$0$0$i;
     }
     $292 = $v2$sroa$0$0$i * $v3$sroa$31$2$i;
     $293 = $v2$sroa$16$0$i * $v3$sroa$0$2$i;
     $294 = $292 - $293;
     if ($294 == 0.0) {
      $$7$i2 = $$7$i1;
      $377 = $191;
      $379 = $193;
      $380 = $194;
      $383 = $197;
      $385 = $199;
      break;
     }
     $299 = ($v2$sroa$16$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$31$2$i) / $294;
     $301 = $226 * $v3$sroa$31$2$i / $294;
     $305 = $293 - $292;
     $306 = ($v2$sroa$0$0$i * $v3$sroa$60$3$i - $v2$sroa$31$0$i * $v3$sroa$0$2$i) / $305;
     $308 = $226 * $v3$sroa$0$2$i / $305;
     $312 = $299 * $299 + $306 * $306 + 1.0;
     $315 = $299 * $301 + $306 * $308;
     $322 = $315 * $315 - $312 * ($301 * $301 + $308 * $308 + -1.0);
     if ($322 < 0.0) {
      $$7$i2 = $$7$i1;
      $377 = $191;
      $379 = $193;
      $380 = $194;
      $383 = $197;
      $385 = $199;
      break;
     }
     $325 = +Math_sqrt(+$322);
     $327 = ($325 - $315) / $312;
     $329 = $301 + $299 * $327;
     $331 = $308 + $306 * $327;
     $333 = (-$315 - $325) / $312;
     $335 = $301 + $299 * $333;
     $337 = $308 + $306 * $333;
     $338 = ($f$2$i | 0) == 1;
     $$15$i = $338 ? $327 : $331;
     $$16$i = $338 ? $331 : $327;
     $$17$i = $338 ? $333 : $337;
     $$18$i = $338 ? $337 : $333;
     $340 = ($f$2$i | 0) == 2 & ($338 ^ 1);
     $$16$$i = $340 ? $$16$i : $329;
     $$$16$i = $340 ? $329 : $$16$i;
     $$18$$i = $340 ? $$18$i : $335;
     $$$18$i = $340 ? $335 : $$18$i;
     $345 = $$$8$i * $$$16$i + ($$7$i * $$15$i + $$8$$i * $$16$$i);
     $e1$0$i = $345 < 0.0 ? -$345 : $345;
     $352 = $$$8$i * $$$18$i + ($$7$i * $$17$i + $$8$$i * $$18$$i);
     $e2$0$i = $352 < 0.0 ? -$352 : $352;
     $359 = $$$10$i * $$$16$i + ($$9$i * $$15$i + $$10$$i * $$16$$i);
     $e3$0$i = $359 < 0.0 ? -$359 : $359;
     $366 = $$$10$i * $$$18$i + ($$9$i * $$17$i + $$10$$i * $$18$$i);
     $e4$0$i = $366 < 0.0 ? -$366 : $366;
     if ($e1$0$i < $e2$0$i) if ($e1$0$i < $e3$0$i) {
      if ($e1$0$i < $e4$0$i) {
       $$7$i2 = $$7$i;
       $377 = $$$16$i;
       $379 = $$15$i;
       $380 = $$$8$i;
       $383 = $$16$$i;
       $385 = $$8$$i;
       break;
      }
      $$7$i2 = $$9$i;
      $377 = $$$18$i;
      $379 = $$17$i;
      $380 = $$$10$i;
      $383 = $$18$$i;
      $385 = $$10$$i;
      break;
     } else {
      if ($e3$0$i < $e4$0$i) {
       $$7$i2 = $$9$i;
       $377 = $$$16$i;
       $379 = $$15$i;
       $380 = $$$10$i;
       $383 = $$16$$i;
       $385 = $$10$$i;
       break;
      }
      $$7$i2 = $$9$i;
      $377 = $$$18$i;
      $379 = $$17$i;
      $380 = $$$10$i;
      $383 = $$18$$i;
      $385 = $$10$$i;
      break;
     } else if ($e2$0$i < $e3$0$i) {
      if ($e2$0$i < $e4$0$i) {
       $$7$i2 = $$7$i;
       $377 = $$$18$i;
       $379 = $$17$i;
       $380 = $$$8$i;
       $383 = $$18$$i;
       $385 = $$8$$i;
       break;
      }
      $$7$i2 = $$9$i;
      $377 = $$$18$i;
      $379 = $$17$i;
      $380 = $$$10$i;
      $383 = $$18$$i;
      $385 = $$10$$i;
      break;
     } else {
      if ($e3$0$i < $e4$0$i) {
       $$7$i2 = $$9$i;
       $377 = $$$16$i;
       $379 = $$15$i;
       $380 = $$$10$i;
       $383 = $$16$$i;
       $385 = $$10$$i;
       break;
      }
      $$7$i2 = $$9$i;
      $377 = $$$18$i;
      $379 = $$17$i;
      $380 = $$$10$i;
      $383 = $$18$$i;
      $385 = $$10$$i;
      break;
     }
    } while (0);
    $381 = $377 * $$7$i2 - $379 * $380;
    $386 = $383 * $380 - $377 * $385;
    $389 = $379 * $385 - $383 * $$7$i2;
    $395 = +Math_sqrt(+($389 * $389 + ($381 * $381 + $386 * $386)));
    HEAPF64[$initMatXw2Xc >> 3] = $385;
    HEAPF64[$initMatXw2Xc + 32 >> 3] = $$7$i2;
    HEAPF64[$initMatXw2Xc + 64 >> 3] = $380;
    HEAPF64[$initMatXw2Xc + 8 >> 3] = $383;
    HEAPF64[$initMatXw2Xc + 40 >> 3] = $379;
    HEAPF64[$initMatXw2Xc + 72 >> 3] = $377;
    HEAPF64[$initMatXw2Xc + 16 >> 3] = $381 / $395;
    HEAPF64[$initMatXw2Xc + 48 >> 3] = $386 / $395;
    HEAPF64[$initMatXw2Xc + 80 >> 3] = $389 / $395;
    HEAPF64[$initMatXw2Xc + 24 >> 3] = $t$sroa$0$0;
    HEAPF64[$initMatXw2Xc + 56 >> 3] = $t$sroa$6$0;
    HEAPF64[$initMatXw2Xc + 88 >> 3] = $180;
    $$0 = 0;
   }
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, $robustFlag) {
 $handle = $handle | 0;
 $marker_info = $marker_info | 0;
 $marker_num = $marker_num | 0;
 $config = $config | 0;
 $robustFlag = $robustFlag | 0;
 var $$0 = 0.0, $$pre38 = 0, $0 = 0, $1 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $123 = 0, $125 = 0, $128 = 0, $13 = 0, $130 = 0, $133 = 0, $140 = 0, $15 = 0, $150 = 0, $160 = 0, $171 = 0, $2 = 0, $20 = 0.0, $209 = 0, $221 = 0, $224 = 0, $225 = 0, $226 = 0.0, $229 = 0.0, $232 = 0.0, $235 = 0.0, $239 = 0.0, $240 = 0, $241 = 0.0, $242 = 0, $258 = 0.0, $259 = 0.0, $276 = 0.0, $277 = 0.0, $294 = 0.0, $295 = 0.0, $3 = 0, $312 = 0.0, $313 = 0.0, $342 = 0, $344 = 0, $346 = 0, $348 = 0, $35 = 0, $38 = 0, $40 = 0, $43 = 0, $47 = 0, $5 = 0, $59 = 0.0, $6 = 0, $7 = 0, $75 = 0, $77 = 0, $79 = 0, $86 = 0, $err$0 = 0.0, $err$1 = 0.0, $err$2 = 0.0, $err$3 = 0.0, $err$4 = 0.0, $err$5 = 0.0, $err$6 = 0.0, $i$081 = 0, $i$165 = 0, $i$256 = 0, $i$942 = 0, $j$077 = 0, $j$1055 = 0, $j$171 = 0, $j$261 = 0, $j$357 = 0, $j$4 = 0, $j$553 = 0, $j$651 = 0, $j$749 = 0, $j$847 = 0, $j$945 = 0, $k$0$lcssa = 0, $k$078 = 0, $k$1 = 0, $k$2$lcssa = 0, $k$273 = 0, $k$3 = 0, $max$0$lcssa = 0, $max$062 = 0, $max$1 = 0, $max$2 = 0, $maxArea$063 = 0, $maxArea$1 = 0, $maxArea$2 = 0, $trans1 = 0, $trans2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vnum$0$lcssa = 0, $vnum$064 = 0, $vnum$1 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 208 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 200 | 0;
 $vararg_buffer = sp + 192 | 0;
 $trans1 = sp + 96 | 0;
 $trans2 = sp;
 $0 = $config + 4 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = $config + 112 | 0;
 $3 = $config + 120 | 0;
 if (($1 | 0) > 0) {
  $5 = HEAP32[$config >> 2] | 0;
  $6 = ($marker_num | 0) > 0;
  $7 = ($marker_num | 0) > 0;
  $i$081 = 0;
  do {
   if (!(HEAP32[$5 + ($i$081 * 320 | 0) + 4 >> 2] | 0)) {
    if ($6) {
     $15 = HEAP32[$5 + ($i$081 * 320 | 0) >> 2] | 0;
     $j$077 = 0;
     $k$078 = -1;
     while (1) {
      if ((HEAP32[$marker_info + ($j$077 << 8) + 8 >> 2] | 0) == ($15 | 0)) {
       $20 = +HEAPF64[$marker_info + ($j$077 << 8) + 40 >> 3];
       if ($20 < +HEAPF64[$2 >> 3]) $k$1 = $k$078; else if (($k$078 | 0) == -1) $k$1 = $j$077; else if (+HEAPF64[$marker_info + ($k$078 << 8) + 40 >> 3] < $20) $k$1 = $j$077; else $k$1 = $k$078;
      } else $k$1 = $k$078;
      $j$077 = $j$077 + 1 | 0;
      if (($j$077 | 0) >= ($marker_num | 0)) {
       $k$0$lcssa = $k$1;
       break;
      } else $k$078 = $k$1;
     }
    } else $k$0$lcssa = -1;
    HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$0$lcssa;
    if (($k$0$lcssa | 0) > -1) HEAP32[$marker_info + ($k$0$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$0$lcssa << 8) + 20 >> 2];
   } else {
    $12 = $5 + ($i$081 * 320 | 0) + 312 | 0;
    $13 = $5 + ($i$081 * 320 | 0) | 0;
    if ($7) {
     $j$171 = 0;
     $k$273 = -1;
     while (1) {
      $35 = HEAP32[$marker_info + ($j$171 << 8) + 12 >> 2] | 0;
      if (!$35) {
       $38 = $marker_info + ($j$171 << 8) + 248 | 0;
       $40 = HEAP32[$38 >> 2] | 0;
       $43 = HEAP32[$38 + 4 >> 2] | 0;
       if (($40 | 0) == 0 & ($43 | 0) == 0) label = 19; else {
        $47 = $12;
        if (($40 | 0) == (HEAP32[$47 >> 2] | 0) ? ($43 | 0) == (HEAP32[$47 + 4 >> 2] | 0) : 0) label = 20; else $k$3 = $k$273;
       }
      } else label = 19;
      if ((label | 0) == 19) {
       label = 0;
       if (($35 | 0) == (HEAP32[$13 >> 2] | 0)) label = 20; else $k$3 = $k$273;
      }
      if ((label | 0) == 20) {
       label = 0;
       $59 = +HEAPF64[$marker_info + ($j$171 << 8) + 48 >> 3];
       if ($59 < +HEAPF64[$3 >> 3]) $k$3 = $k$273; else if (($k$273 | 0) == -1) $k$3 = $j$171; else if (+HEAPF64[$marker_info + ($k$273 << 8) + 48 >> 3] < $59) $k$3 = $j$171; else $k$3 = $k$273;
      }
      $j$171 = $j$171 + 1 | 0;
      if (($j$171 | 0) >= ($marker_num | 0)) {
       $k$2$lcssa = $k$3;
       break;
      } else $k$273 = $k$3;
     }
    } else $k$2$lcssa = -1;
    HEAP32[$5 + ($i$081 * 320 | 0) + 304 >> 2] = $k$2$lcssa;
    if (($k$2$lcssa | 0) > -1) HEAP32[$marker_info + ($k$2$lcssa << 8) + 16 >> 2] = HEAP32[$marker_info + ($k$2$lcssa << 8) + 24 >> 2];
   }
   $i$081 = $i$081 + 1 | 0;
  } while (($i$081 | 0) < ($1 | 0));
 }
 if (($1 | 0) > 0) {
  $i$165 = 0;
  $max$062 = 0;
  $maxArea$063 = 0;
  $vnum$064 = 0;
  while (1) {
   $75 = HEAP32[$config >> 2] | 0;
   $77 = HEAP32[$75 + ($i$165 * 320 | 0) + 304 >> 2] | 0;
   do if (($77 | 0) < 0) {
    $max$2 = $max$062;
    $maxArea$2 = $maxArea$063;
    $vnum$1 = $vnum$064;
   } else {
    $79 = $marker_info + ($77 << 8) | 0;
    if (+_arGetTransMatSquare($handle, $79, +HEAPF64[$75 + ($i$165 * 320 | 0) + 8 >> 3], $trans2) > 4.0) {
     HEAP32[(HEAP32[$config >> 2] | 0) + ($i$165 * 320 | 0) + 304 >> 2] = -1;
     $86 = $marker_info + ($77 << 8) + 236 | 0;
     if (HEAP32[$86 >> 2] | 0) {
      $max$2 = $max$062;
      $maxArea$2 = $maxArea$063;
      $vnum$1 = $vnum$064;
      break;
     }
     HEAP32[$86 >> 2] = 7;
     $max$2 = $max$062;
     $maxArea$2 = $maxArea$063;
     $vnum$1 = $vnum$064;
     break;
    }
    $$pre38 = HEAP32[$79 >> 2] | 0;
    if (($vnum$064 | 0) == 0 | ($maxArea$063 | 0) < ($$pre38 | 0)) {
     $j$261 = 0;
     do {
      HEAPF64[$trans1 + ($j$261 << 5) >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) >> 3];
      HEAPF64[$trans1 + ($j$261 << 5) + 8 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 8 >> 3];
      HEAPF64[$trans1 + ($j$261 << 5) + 16 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 16 >> 3];
      HEAPF64[$trans1 + ($j$261 << 5) + 24 >> 3] = +HEAPF64[$trans2 + ($j$261 << 5) + 24 >> 3];
      $j$261 = $j$261 + 1 | 0;
     } while (($j$261 | 0) != 3);
     $max$1 = $i$165;
     $maxArea$1 = $$pre38;
    } else {
     $max$1 = $max$062;
     $maxArea$1 = $maxArea$063;
    }
    $max$2 = $max$1;
    $maxArea$2 = $maxArea$1;
    $vnum$1 = $vnum$064 + 1 | 0;
   } while (0);
   $i$165 = $i$165 + 1 | 0;
   if (($i$165 | 0) >= (HEAP32[$0 >> 2] | 0)) {
    $max$0$lcssa = $max$2;
    $vnum$0$lcssa = $vnum$1;
    break;
   } else {
    $max$062 = $max$2;
    $maxArea$063 = $maxArea$2;
    $vnum$064 = $vnum$1;
   }
  }
 } else {
  $max$0$lcssa = 0;
  $vnum$0$lcssa = 0;
 }
 do if (!$vnum$0$lcssa) label = 38; else if (($vnum$0$lcssa | 0) < (HEAP32[$config + 128 >> 2] | 0)) label = 38; else {
  _arUtilMatMul($trans1, (HEAP32[$config >> 2] | 0) + ($max$0$lcssa * 320 | 0) + 112 | 0, $trans2) | 0;
  $114 = $vnum$0$lcssa << 2;
  $116 = _malloc($vnum$0$lcssa << 6) | 0;
  if (!$116) {
   _arLog(3, 5471, $vararg_buffer);
   _exit(1);
  }
  $119 = _malloc($vnum$0$lcssa * 96 | 0) | 0;
  if (!$119) {
   _arLog(3, 5471, $vararg_buffer1);
   _exit(1);
  }
  $121 = HEAP32[$0 >> 2] | 0;
  if (($121 | 0) > 0) {
   $123 = HEAP32[$config >> 2] | 0;
   $i$256 = 0;
   $j$357 = 0;
   while (1) {
    $125 = HEAP32[$123 + ($i$256 * 320 | 0) + 304 >> 2] | 0;
    if (($125 | 0) < 0) $j$4 = $j$357; else {
     $128 = HEAP32[$marker_info + ($125 << 8) + 16 >> 2] | 0;
     $130 = (4 - $128 | 0) % 4 | 0;
     $133 = $j$357 << 3;
     HEAPF64[$116 + ($133 << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) >> 3];
     HEAPF64[$116 + (($133 | 1) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($130 << 4) + 8 >> 3];
     $140 = (5 - $128 | 0) % 4 | 0;
     HEAPF64[$116 + (($133 | 2) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) >> 3];
     HEAPF64[$116 + (($133 | 3) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($140 << 4) + 8 >> 3];
     $150 = (6 - $128 | 0) % 4 | 0;
     HEAPF64[$116 + (($133 | 4) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) >> 3];
     HEAPF64[$116 + (($133 | 5) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($150 << 4) + 8 >> 3];
     $160 = (7 - $128 | 0) % 4 | 0;
     HEAPF64[$116 + (($133 | 6) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) >> 3];
     HEAPF64[$116 + (($133 | 7) << 3) >> 3] = +HEAPF64[$marker_info + ($125 << 8) + 168 + ($160 << 4) + 8 >> 3];
     $171 = $j$357 * 12 | 0;
     HEAPF64[$119 + ($171 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 208 >> 3];
     HEAPF64[$119 + (($171 | 1) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 216 >> 3];
     HEAPF64[$119 + (($171 | 2) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 224 >> 3];
     HEAPF64[$119 + (($171 | 3) << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 232 >> 3];
     HEAPF64[$119 + ($171 + 4 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 240 >> 3];
     HEAPF64[$119 + ($171 + 5 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 248 >> 3];
     HEAPF64[$119 + ($171 + 6 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 256 >> 3];
     HEAPF64[$119 + ($171 + 7 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 264 >> 3];
     HEAPF64[$119 + ($171 + 8 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 272 >> 3];
     HEAPF64[$119 + ($171 + 9 << 3) >> 3] = +HEAPF64[$123 + ($i$256 * 320 | 0) + 280 >> 3];
     $209 = HEAP32[$config >> 2] | 0;
     HEAPF64[$119 + ($171 + 10 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 288 >> 3];
     HEAPF64[$119 + ($171 + 11 << 3) >> 3] = +HEAPF64[$209 + ($i$256 * 320 | 0) + 296 >> 3];
     $j$4 = $j$357 + 1 | 0;
    }
    $i$256 = $i$256 + 1 | 0;
    if (($i$256 | 0) >= ($121 | 0)) break; else $j$357 = $j$4;
   }
  }
  $221 = $config + 104 | 0;
  $224 = ($robustFlag | 0) != 0;
  if (!(HEAP32[$221 >> 2] | 0)) {
   $225 = $config + 8 | 0;
   $226 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $225);
   if ($224 & $226 >= 20.0) {
    _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0;
    $229 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);
    if (!($229 >= 20.0)) $err$0 = $229; else {
     _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0;
     $232 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);
     if (!($232 >= 20.0)) $err$0 = $232; else {
      _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0;
      $235 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);
      if (!($235 >= 20.0)) $err$0 = $235; else {
       _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0;
       $err$0 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $225);
      }
     }
    }
   } else $err$0 = $226;
   _free($119);
   _free($116);
   $err$6 = $err$0;
  } else {
   $239 = +_arGetTransMat($handle, $trans2, $116, $119, $114, $trans1);
   $240 = $config + 8 | 0;
   $241 = +_arGetTransMat($handle, $240, $116, $119, $114, $240);
   $242 = $239 < $241;
   do if ($224) {
    if ($242) {
     $j$553 = 0;
     do {
      HEAPF64[$config + 8 + ($j$553 << 5) >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) >> 3];
      HEAPF64[$config + 8 + ($j$553 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 8 >> 3];
      HEAPF64[$config + 8 + ($j$553 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 16 >> 3];
      HEAPF64[$config + 8 + ($j$553 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$553 << 5) + 24 >> 3];
      $j$553 = $j$553 + 1 | 0;
     } while (($j$553 | 0) != 3);
     $err$1 = $239;
    } else $err$1 = $241;
    if (!($err$1 >= 20.0)) $err$5 = $err$1; else {
     _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .8) | 0;
     $258 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);
     $259 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);
     if ($258 < $259) {
      $j$651 = 0;
      do {
       HEAPF64[$config + 8 + ($j$651 << 5) >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) >> 3];
       HEAPF64[$config + 8 + ($j$651 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 8 >> 3];
       HEAPF64[$config + 8 + ($j$651 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 16 >> 3];
       HEAPF64[$config + 8 + ($j$651 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$651 << 5) + 24 >> 3];
       $j$651 = $j$651 + 1 | 0;
      } while (($j$651 | 0) != 3);
      $err$2 = $258;
     } else $err$2 = $259;
     if (!($err$2 >= 20.0)) $err$5 = $err$2; else {
      _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .6) | 0;
      $276 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);
      $277 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);
      if ($276 < $277) {
       $j$749 = 0;
       do {
        HEAPF64[$config + 8 + ($j$749 << 5) >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) >> 3];
        HEAPF64[$config + 8 + ($j$749 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 8 >> 3];
        HEAPF64[$config + 8 + ($j$749 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 16 >> 3];
        HEAPF64[$config + 8 + ($j$749 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$749 << 5) + 24 >> 3];
        $j$749 = $j$749 + 1 | 0;
       } while (($j$749 | 0) != 3);
       $err$3 = $276;
      } else $err$3 = $277;
      if (!($err$3 >= 20.0)) $err$5 = $err$3; else {
       _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, .4) | 0;
       $294 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);
       $295 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);
       if ($294 < $295) {
        $j$847 = 0;
        do {
         HEAPF64[$config + 8 + ($j$847 << 5) >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) >> 3];
         HEAPF64[$config + 8 + ($j$847 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 8 >> 3];
         HEAPF64[$config + 8 + ($j$847 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 16 >> 3];
         HEAPF64[$config + 8 + ($j$847 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$847 << 5) + 24 >> 3];
         $j$847 = $j$847 + 1 | 0;
        } while (($j$847 | 0) != 3);
        $err$4 = $294;
       } else $err$4 = $295;
       if (!($err$4 >= 20.0)) $err$5 = $err$4; else {
        _icpSetInlierProbability(HEAP32[$handle >> 2] | 0, 0.0) | 0;
        $312 = +_arGetTransMatRobust($handle, $trans2, $116, $119, $114, $trans1);
        $313 = +_arGetTransMatRobust($handle, $240, $116, $119, $114, $240);
        if ($312 < $313) $j$945 = 0; else {
         $err$5 = $313;
         break;
        }
        do {
         HEAPF64[$config + 8 + ($j$945 << 5) >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) >> 3];
         HEAPF64[$config + 8 + ($j$945 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 8 >> 3];
         HEAPF64[$config + 8 + ($j$945 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 16 >> 3];
         HEAPF64[$config + 8 + ($j$945 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$945 << 5) + 24 >> 3];
         $j$945 = $j$945 + 1 | 0;
        } while (($j$945 | 0) != 3);
        $err$5 = $312;
       }
      }
     }
    }
   } else if ($242) {
    $j$1055 = 0;
    do {
     HEAPF64[$config + 8 + ($j$1055 << 5) >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) >> 3];
     HEAPF64[$config + 8 + ($j$1055 << 5) + 8 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 8 >> 3];
     HEAPF64[$config + 8 + ($j$1055 << 5) + 16 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 16 >> 3];
     HEAPF64[$config + 8 + ($j$1055 << 5) + 24 >> 3] = +HEAPF64[$trans1 + ($j$1055 << 5) + 24 >> 3];
     $j$1055 = $j$1055 + 1 | 0;
    } while (($j$1055 | 0) != 3);
    $err$5 = $239;
   } else $err$5 = $241; while (0);
   _free($119);
   _free($116);
   $err$6 = $err$5;
  }
  if ($err$6 < 20.0) {
   HEAP32[$221 >> 2] = 1;
   $$0 = $err$6;
   break;
  }
  HEAP32[$221 >> 2] = 0;
  $342 = HEAP32[$0 >> 2] | 0;
  if (($342 | 0) > 0) {
   $344 = HEAP32[$config >> 2] | 0;
   $i$942 = 0;
   do {
    $346 = HEAP32[$344 + ($i$942 * 320 | 0) + 304 >> 2] | 0;
    if (($346 | 0) >= 0) {
     $348 = $marker_info + ($346 << 8) + 236 | 0;
     if (!(HEAP32[$348 >> 2] | 0)) HEAP32[$348 >> 2] = 8;
    }
    $i$942 = $i$942 + 1 | 0;
   } while (($i$942 | 0) < ($342 | 0));
   $$0 = $err$6;
  } else $$0 = $err$6;
 } while (0);
 if ((label | 0) == 38) {
  HEAP32[$config + 104 >> 2] = 0;
  $$0 = -1.0;
 }
 STACKTOP = sp;
 return +$$0;
}

function __ZNSt3__112__next_primeEj($n) {
 $n = $n | 0;
 var $$ = 0, $$0 = 0, $$k0$0 = 0, $0 = 0, $1 = 0, $103 = 0, $104 = 0, $108 = 0, $109 = 0, $113 = 0, $114 = 0, $118 = 0, $119 = 0, $12 = 0, $123 = 0, $124 = 0, $128 = 0, $129 = 0, $133 = 0, $134 = 0, $138 = 0, $139 = 0, $143 = 0, $144 = 0, $148 = 0, $149 = 0, $153 = 0, $154 = 0, $158 = 0, $159 = 0, $163 = 0, $164 = 0, $168 = 0, $169 = 0, $173 = 0, $174 = 0, $178 = 0, $179 = 0, $18 = 0, $183 = 0, $184 = 0, $188 = 0, $189 = 0, $19 = 0, $193 = 0, $194 = 0, $198 = 0, $199 = 0, $2 = 0, $203 = 0, $204 = 0, $208 = 0, $209 = 0, $213 = 0, $214 = 0, $218 = 0, $219 = 0, $223 = 0, $224 = 0, $228 = 0, $229 = 0, $233 = 0, $234 = 0, $238 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $248 = 0, $249 = 0, $253 = 0, $254 = 0, $258 = 0, $259 = 0, $264 = 0, $265 = 0, $28 = 0, $29 = 0, $33 = 0, $34 = 0, $38 = 0, $39 = 0, $4 = 0, $43 = 0, $44 = 0, $48 = 0, $49 = 0, $53 = 0, $54 = 0, $58 = 0, $59 = 0, $6 = 0, $63 = 0, $64 = 0, $68 = 0, $69 = 0, $7 = 0, $73 = 0, $74 = 0, $78 = 0, $79 = 0, $83 = 0, $84 = 0, $88 = 0, $89 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $i$0 = 0, $in$0 = 0, $j$0 = 0, $k0$0 = 0, $storemerge = 0, $storemerge$lcssa = 0, $storemerge$lcssa15 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 8 | 0;
 $1 = sp + 4 | 0;
 $2 = sp;
 HEAP32[$1 >> 2] = $n;
 do if ($n >>> 0 < 212) {
  $4 = __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3520, 3712, $1, $0) | 0;
  $$0 = HEAP32[$4 >> 2] | 0;
 } else {
  $6 = ($n >>> 0) / 210 | 0;
  $7 = $6 * 210 | 0;
  HEAP32[$2 >> 2] = $n - $7;
  $12 = (__ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_(3712, 3904, $2, $0) | 0) - 3712 >> 2;
  $in$0 = $12;
  $k0$0 = $6;
  $storemerge = (HEAP32[3712 + ($12 << 2) >> 2] | 0) + $7 | 0;
  L4 : while (1) {
   $j$0 = 5;
   while (1) {
    if ($j$0 >>> 0 >= 47) {
     $i$0 = 211;
     label = 8;
     break;
    }
    $18 = HEAP32[3520 + ($j$0 << 2) >> 2] | 0;
    $19 = ($storemerge >>> 0) / ($18 >>> 0) | 0;
    if ($19 >>> 0 < $18 >>> 0) {
     $storemerge$lcssa15 = $storemerge;
     label = 106;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($19, $18) | 0)) break; else $j$0 = $j$0 + 1 | 0;
   }
   L10 : do if ((label | 0) == 8) while (1) {
    label = 0;
    $24 = ($storemerge >>> 0) / ($i$0 >>> 0) | 0;
    if ($24 >>> 0 < $i$0 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($24, $i$0) | 0)) break L10;
    $28 = $i$0 + 10 | 0;
    $29 = ($storemerge >>> 0) / ($28 >>> 0) | 0;
    if ($29 >>> 0 < $28 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($29, $28) | 0)) break L10;
    $33 = $i$0 + 12 | 0;
    $34 = ($storemerge >>> 0) / ($33 >>> 0) | 0;
    if ($34 >>> 0 < $33 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($34, $33) | 0)) break L10;
    $38 = $i$0 + 16 | 0;
    $39 = ($storemerge >>> 0) / ($38 >>> 0) | 0;
    if ($39 >>> 0 < $38 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($39, $38) | 0)) break L10;
    $43 = $i$0 + 18 | 0;
    $44 = ($storemerge >>> 0) / ($43 >>> 0) | 0;
    if ($44 >>> 0 < $43 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($44, $43) | 0)) break L10;
    $48 = $i$0 + 22 | 0;
    $49 = ($storemerge >>> 0) / ($48 >>> 0) | 0;
    if ($49 >>> 0 < $48 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($49, $48) | 0)) break L10;
    $53 = $i$0 + 28 | 0;
    $54 = ($storemerge >>> 0) / ($53 >>> 0) | 0;
    if ($54 >>> 0 < $53 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($54, $53) | 0)) break L10;
    $58 = $i$0 + 30 | 0;
    $59 = ($storemerge >>> 0) / ($58 >>> 0) | 0;
    if ($59 >>> 0 < $58 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($59, $58) | 0)) break L10;
    $63 = $i$0 + 36 | 0;
    $64 = ($storemerge >>> 0) / ($63 >>> 0) | 0;
    if ($64 >>> 0 < $63 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($64, $63) | 0)) break L10;
    $68 = $i$0 + 40 | 0;
    $69 = ($storemerge >>> 0) / ($68 >>> 0) | 0;
    if ($69 >>> 0 < $68 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($69, $68) | 0)) break L10;
    $73 = $i$0 + 42 | 0;
    $74 = ($storemerge >>> 0) / ($73 >>> 0) | 0;
    if ($74 >>> 0 < $73 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($74, $73) | 0)) break L10;
    $78 = $i$0 + 46 | 0;
    $79 = ($storemerge >>> 0) / ($78 >>> 0) | 0;
    if ($79 >>> 0 < $78 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($79, $78) | 0)) break L10;
    $83 = $i$0 + 52 | 0;
    $84 = ($storemerge >>> 0) / ($83 >>> 0) | 0;
    if ($84 >>> 0 < $83 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($84, $83) | 0)) break L10;
    $88 = $i$0 + 58 | 0;
    $89 = ($storemerge >>> 0) / ($88 >>> 0) | 0;
    if ($89 >>> 0 < $88 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($89, $88) | 0)) break L10;
    $93 = $i$0 + 60 | 0;
    $94 = ($storemerge >>> 0) / ($93 >>> 0) | 0;
    if ($94 >>> 0 < $93 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($94, $93) | 0)) break L10;
    $98 = $i$0 + 66 | 0;
    $99 = ($storemerge >>> 0) / ($98 >>> 0) | 0;
    if ($99 >>> 0 < $98 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($99, $98) | 0)) break L10;
    $103 = $i$0 + 70 | 0;
    $104 = ($storemerge >>> 0) / ($103 >>> 0) | 0;
    if ($104 >>> 0 < $103 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($104, $103) | 0)) break L10;
    $108 = $i$0 + 72 | 0;
    $109 = ($storemerge >>> 0) / ($108 >>> 0) | 0;
    if ($109 >>> 0 < $108 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($109, $108) | 0)) break L10;
    $113 = $i$0 + 78 | 0;
    $114 = ($storemerge >>> 0) / ($113 >>> 0) | 0;
    if ($114 >>> 0 < $113 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($114, $113) | 0)) break L10;
    $118 = $i$0 + 82 | 0;
    $119 = ($storemerge >>> 0) / ($118 >>> 0) | 0;
    if ($119 >>> 0 < $118 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($119, $118) | 0)) break L10;
    $123 = $i$0 + 88 | 0;
    $124 = ($storemerge >>> 0) / ($123 >>> 0) | 0;
    if ($124 >>> 0 < $123 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($124, $123) | 0)) break L10;
    $128 = $i$0 + 96 | 0;
    $129 = ($storemerge >>> 0) / ($128 >>> 0) | 0;
    if ($129 >>> 0 < $128 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($129, $128) | 0)) break L10;
    $133 = $i$0 + 100 | 0;
    $134 = ($storemerge >>> 0) / ($133 >>> 0) | 0;
    if ($134 >>> 0 < $133 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($134, $133) | 0)) break L10;
    $138 = $i$0 + 102 | 0;
    $139 = ($storemerge >>> 0) / ($138 >>> 0) | 0;
    if ($139 >>> 0 < $138 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($139, $138) | 0)) break L10;
    $143 = $i$0 + 106 | 0;
    $144 = ($storemerge >>> 0) / ($143 >>> 0) | 0;
    if ($144 >>> 0 < $143 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($144, $143) | 0)) break L10;
    $148 = $i$0 + 108 | 0;
    $149 = ($storemerge >>> 0) / ($148 >>> 0) | 0;
    if ($149 >>> 0 < $148 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($149, $148) | 0)) break L10;
    $153 = $i$0 + 112 | 0;
    $154 = ($storemerge >>> 0) / ($153 >>> 0) | 0;
    if ($154 >>> 0 < $153 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($154, $153) | 0)) break L10;
    $158 = $i$0 + 120 | 0;
    $159 = ($storemerge >>> 0) / ($158 >>> 0) | 0;
    if ($159 >>> 0 < $158 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($159, $158) | 0)) break L10;
    $163 = $i$0 + 126 | 0;
    $164 = ($storemerge >>> 0) / ($163 >>> 0) | 0;
    if ($164 >>> 0 < $163 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($164, $163) | 0)) break L10;
    $168 = $i$0 + 130 | 0;
    $169 = ($storemerge >>> 0) / ($168 >>> 0) | 0;
    if ($169 >>> 0 < $168 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($169, $168) | 0)) break L10;
    $173 = $i$0 + 136 | 0;
    $174 = ($storemerge >>> 0) / ($173 >>> 0) | 0;
    if ($174 >>> 0 < $173 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($174, $173) | 0)) break L10;
    $178 = $i$0 + 138 | 0;
    $179 = ($storemerge >>> 0) / ($178 >>> 0) | 0;
    if ($179 >>> 0 < $178 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($179, $178) | 0)) break L10;
    $183 = $i$0 + 142 | 0;
    $184 = ($storemerge >>> 0) / ($183 >>> 0) | 0;
    if ($184 >>> 0 < $183 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($184, $183) | 0)) break L10;
    $188 = $i$0 + 148 | 0;
    $189 = ($storemerge >>> 0) / ($188 >>> 0) | 0;
    if ($189 >>> 0 < $188 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($189, $188) | 0)) break L10;
    $193 = $i$0 + 150 | 0;
    $194 = ($storemerge >>> 0) / ($193 >>> 0) | 0;
    if ($194 >>> 0 < $193 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($194, $193) | 0)) break L10;
    $198 = $i$0 + 156 | 0;
    $199 = ($storemerge >>> 0) / ($198 >>> 0) | 0;
    if ($199 >>> 0 < $198 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($199, $198) | 0)) break L10;
    $203 = $i$0 + 162 | 0;
    $204 = ($storemerge >>> 0) / ($203 >>> 0) | 0;
    if ($204 >>> 0 < $203 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($204, $203) | 0)) break L10;
    $208 = $i$0 + 166 | 0;
    $209 = ($storemerge >>> 0) / ($208 >>> 0) | 0;
    if ($209 >>> 0 < $208 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($209, $208) | 0)) break L10;
    $213 = $i$0 + 168 | 0;
    $214 = ($storemerge >>> 0) / ($213 >>> 0) | 0;
    if ($214 >>> 0 < $213 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($214, $213) | 0)) break L10;
    $218 = $i$0 + 172 | 0;
    $219 = ($storemerge >>> 0) / ($218 >>> 0) | 0;
    if ($219 >>> 0 < $218 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($219, $218) | 0)) break L10;
    $223 = $i$0 + 178 | 0;
    $224 = ($storemerge >>> 0) / ($223 >>> 0) | 0;
    if ($224 >>> 0 < $223 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($224, $223) | 0)) break L10;
    $228 = $i$0 + 180 | 0;
    $229 = ($storemerge >>> 0) / ($228 >>> 0) | 0;
    if ($229 >>> 0 < $228 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($229, $228) | 0)) break L10;
    $233 = $i$0 + 186 | 0;
    $234 = ($storemerge >>> 0) / ($233 >>> 0) | 0;
    if ($234 >>> 0 < $233 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($234, $233) | 0)) break L10;
    $238 = $i$0 + 190 | 0;
    $239 = ($storemerge >>> 0) / ($238 >>> 0) | 0;
    if ($239 >>> 0 < $238 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($239, $238) | 0)) break L10;
    $243 = $i$0 + 192 | 0;
    $244 = ($storemerge >>> 0) / ($243 >>> 0) | 0;
    if ($244 >>> 0 < $243 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($244, $243) | 0)) break L10;
    $248 = $i$0 + 196 | 0;
    $249 = ($storemerge >>> 0) / ($248 >>> 0) | 0;
    if ($249 >>> 0 < $248 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($249, $248) | 0)) break L10;
    $253 = $i$0 + 198 | 0;
    $254 = ($storemerge >>> 0) / ($253 >>> 0) | 0;
    if ($254 >>> 0 < $253 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($254, $253) | 0)) break L10;
    $258 = $i$0 + 208 | 0;
    $259 = ($storemerge >>> 0) / ($258 >>> 0) | 0;
    if ($259 >>> 0 < $258 >>> 0) {
     $storemerge$lcssa = $storemerge;
     label = 105;
     break L4;
    }
    if (($storemerge | 0) == (Math_imul($259, $258) | 0)) break; else {
     $i$0 = $i$0 + 210 | 0;
     label = 8;
    }
   } while (0);
   $264 = $in$0 + 1 | 0;
   $265 = ($264 | 0) == 48;
   $$ = $265 ? 0 : $264;
   $$k0$0 = ($265 & 1) + $k0$0 | 0;
   $in$0 = $$;
   $k0$0 = $$k0$0;
   $storemerge = (HEAP32[3712 + ($$ << 2) >> 2] | 0) + ($$k0$0 * 210 | 0) | 0;
  }
  if ((label | 0) == 105) {
   HEAP32[$1 >> 2] = $storemerge$lcssa;
   $$0 = $storemerge$lcssa;
   break;
  } else if ((label | 0) == 106) {
   HEAP32[$1 >> 2] = $storemerge$lcssa15;
   $$0 = $storemerge$lcssa15;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $image_thresh = $image_thresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$096 = 0;
  $pnt1$097 = $0;
  $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$095 >> 1] = 0;
   HEAP16[$pnt1$097 >> 1] = 0;
   $i$096 = $i$096 + 1 | 0;
   if (($i$096 | 0) >= ($xsize | 0)) break; else {
    $pnt1$097 = $pnt1$097 + 2 | 0;
    $pnt2$095 = $pnt2$095 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$190 = 0;
  $pnt1$191 = $0;
  $pnt2$189 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$189 >> 1] = 0;
   HEAP16[$pnt1$191 >> 1] = 0;
   $i$190 = $i$190 + 1 | 0;
   if (($i$190 | 0) >= ($ysize | 0)) break; else {
    $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0;
    $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$083 = 1;
  $pnt$086 = $image + $17 | 0;
  $pnt2$281 = $0 + ($17 << 1) | 0;
  $pnt_thresh$085 = $image_thresh + $17 | 0;
  $wk_max$082 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$163 = $dpnt$080;
    $i$270 = 1;
    $pnt$173 = $pnt$086;
    $pnt2$364 = $pnt2$281;
    $pnt_thresh$172 = $pnt_thresh$085;
    $wk_max$165 = $wk_max$082;
    while (1) {
     do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) {
      HEAP8[$dpnt$163 >> 0] = -1;
      $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$364 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$364 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083;
        $wk_max$2 = $wk_max$165;
        break;
       }
       $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$364 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) {
         $wk_max$2 = $wk_max$165;
         break;
        }
        HEAP32[$193 >> 2] = $i$270;
        $wk_max$2 = $wk_max$165;
        break;
       } else {
        $196 = $wk_max$165 + 1 | 0;
        if (($wk_max$165 | 0) > 32767) break L13;
        HEAP16[$pnt2$364 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$165 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$364 >> 1] = $62;
        if (($wk_max$165 | 0) > 0) {
         $k$059 = 0;
         $wk$060 = $16;
         while (1) {
          if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62;
          $k$059 = $k$059 + 1 | 0;
          if (($k$059 | 0) >= ($wk_max$165 | 0)) {
           $79 = $62;
           break;
          } else $wk$060 = $wk$060 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$364 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) {
         $k$156 = 0;
         $wk$157 = $16;
         while (1) {
          if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59;
          $k$156 = $k$156 + 1 | 0;
          if (($k$156 | 0) >= ($wk_max$165 | 0)) {
           $79 = $59;
           break;
          } else $wk$157 = $wk$157 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$364 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$364 >> 1] = $105;
       if (($wk_max$165 | 0) > 0) {
        $k$252 = 0;
        $wk$253 = $16;
        while (1) {
         if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105;
         $k$252 = $k$252 + 1 | 0;
         if (($k$252 | 0) >= ($wk_max$165 | 0)) {
          $122 = $105;
          break;
         } else $wk$253 = $wk$253 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$364 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) {
        $k$349 = 0;
        $wk$350 = $16;
        while (1) {
         if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102;
         $k$349 = $k$349 + 1 | 0;
         if (($k$349 | 0) >= ($wk_max$165 | 0)) {
          $122 = $102;
          break;
         } else $wk$350 = $wk$350 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083;
      $wk_max$2 = $wk_max$165;
     } else {
      HEAP16[$pnt2$364 >> 1] = 0;
      HEAP8[$dpnt$163 >> 0] = 0;
      $wk_max$2 = $wk_max$165;
     } while (0);
     $i$270 = $i$270 + 1 | 0;
     $216 = $pnt$173 + 1 | 0;
     $217 = $pnt_thresh$172 + 1 | 0;
     $218 = $pnt2$364 + 2 | 0;
     $219 = $dpnt$163 + 1 | 0;
     if (($i$270 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $219;
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $218;
      $pnt_thresh$1$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$163 = $219;
      $pnt$173 = $216;
      $pnt2$364 = $218;
      $pnt_thresh$172 = $217;
      $wk_max$165 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$080;
    $pnt$1$lcssa = $pnt$086;
    $pnt2$3$lcssa = $pnt2$281;
    $pnt_thresh$1$lcssa = $pnt_thresh$085;
    $wk_max$1$lcssa = $wk_max$082;
   }
   $j$083 = $j$083 + 1 | 0;
   if (($j$083 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$080 = $dpnt$1$lcssa + 2 | 0;
    $pnt$086 = $pnt$1$lcssa + 2 | 0;
    $pnt2$281 = $pnt2$3$lcssa + 4 | 0;
    $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0;
    $wk_max$082 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $227 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$345 = 1;
   $j$146 = 1;
   $wk$447 = $16;
   while (1) {
    $229 = HEAP32[$wk$447 >> 2] | 0;
    if (($229 | 0) == ($i$345 | 0)) {
     $235 = $j$146;
     $j$2 = $j$146 + 1 | 0;
    } else {
     $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0;
     $j$2 = $j$146;
    }
    HEAP32[$wk$447 >> 2] = $235;
    if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$345 = $i$345 + 1 | 0;
     $j$146 = $j$2;
     $wk$447 = $wk$447 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $239 = $labelInfo + 8 | 0;
  $240 = $j$1$lcssa + -1 | 0;
  HEAP32[$239 >> 2] = $240;
  if (!$240) $$0 = 0; else {
   _memset($227 | 0, 0, $240 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$443 = 0;
    do {
     $247 = $i$443 << 2;
     HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0;
     $i$443 = $i$443 + 1 | 0;
    } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$541 = 0;
    do {
     $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0;
     $262 = $i$541 * 7 | 0;
     $265 = $labelInfo + 12 + ($261 << 2) | 0;
     HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0);
     $272 = $261 << 1;
     $273 = $labelInfo + 655376 + ($272 << 3) | 0;
     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0);
     $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0);
     $284 = $261 << 2;
     $285 = $labelInfo + 131084 + ($284 << 2) | 0;
     $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289;
     $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $i$541 = $i$541 + 1 | 0;
    } while (($i$541 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$239 >> 2] | 0) > 0) {
    $i$640 = 0;
    do {
     $314 = $labelInfo + 12 + ($i$640 << 2) | 0;
     $317 = $i$640 << 1;
     $318 = $labelInfo + 655376 + ($317 << 3) | 0;
     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0);
     $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0);
     $i$640 = $i$640 + 1 | 0;
    } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $image_thresh = $image_thresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $227 = 0, $229 = 0, $235 = 0, $239 = 0, $240 = 0, $247 = 0, $26 = 0, $261 = 0, $262 = 0, $265 = 0, $272 = 0, $273 = 0, $281 = 0, $284 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $318 = 0, $324 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$080 = 0, $dpnt$1$lcssa = 0, $dpnt$163 = 0, $i$096 = 0, $i$190 = 0, $i$270 = 0, $i$345 = 0, $i$443 = 0, $i$541 = 0, $i$640 = 0, $j$083 = 0, $j$1$lcssa = 0, $j$146 = 0, $j$2 = 0, $k$059 = 0, $k$156 = 0, $k$252 = 0, $k$349 = 0, $pnt$086 = 0, $pnt$1$lcssa = 0, $pnt$173 = 0, $pnt1$097 = 0, $pnt1$191 = 0, $pnt2$095 = 0, $pnt2$189 = 0, $pnt2$281 = 0, $pnt2$3$lcssa = 0, $pnt2$364 = 0, $pnt_thresh$085 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$172 = 0, $vararg_buffer = 0, $wk$060 = 0, $wk$157 = 0, $wk$253 = 0, $wk$350 = 0, $wk$447 = 0, $wk_max$0$lcssa = 0, $wk_max$082 = 0, $wk_max$1$lcssa = 0, $wk_max$165 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$096 = 0;
  $pnt1$097 = $0;
  $pnt2$095 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$095 >> 1] = 0;
   HEAP16[$pnt1$097 >> 1] = 0;
   $i$096 = $i$096 + 1 | 0;
   if (($i$096 | 0) >= ($xsize | 0)) break; else {
    $pnt1$097 = $pnt1$097 + 2 | 0;
    $pnt2$095 = $pnt2$095 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$190 = 0;
  $pnt1$191 = $0;
  $pnt2$189 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$189 >> 1] = 0;
   HEAP16[$pnt1$191 >> 1] = 0;
   $i$190 = $i$190 + 1 | 0;
   if (($i$190 | 0) >= ($ysize | 0)) break; else {
    $pnt1$191 = $pnt1$191 + ($xsize << 1) | 0;
    $pnt2$189 = $pnt2$189 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$080 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$083 = 1;
  $pnt$086 = $image + $17 | 0;
  $pnt2$281 = $0 + ($17 << 1) | 0;
  $pnt_thresh$085 = $image_thresh + $17 | 0;
  $wk_max$082 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$163 = $dpnt$080;
    $i$270 = 1;
    $pnt$173 = $pnt$086;
    $pnt2$364 = $pnt2$281;
    $pnt_thresh$172 = $pnt_thresh$085;
    $wk_max$165 = $wk_max$082;
    while (1) {
     do if ((HEAPU8[$pnt$173 >> 0] | 0) > (HEAPU8[$pnt_thresh$172 >> 0] | 0)) {
      HEAP16[$pnt2$364 >> 1] = 0;
      HEAP8[$dpnt$163 >> 0] = 0;
      $wk_max$2 = $wk_max$165;
     } else {
      HEAP8[$dpnt$163 >> 0] = -1;
      $31 = HEAP16[$pnt2$364 + ($18 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$364 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$270;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$083;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $50 = HEAP16[$pnt2$364 + ($$sum << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$364 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$364 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$270;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$083;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$270 | 0)) HEAP32[$170 >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$083;
        $wk_max$2 = $wk_max$165;
        break;
       }
       $176 = HEAP16[$pnt2$364 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$364 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$270;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$083;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$270 | 0)) {
         $wk_max$2 = $wk_max$165;
         break;
        }
        HEAP32[$193 >> 2] = $i$270;
        $wk_max$2 = $wk_max$165;
        break;
       } else {
        $196 = $wk_max$165 + 1 | 0;
        if (($wk_max$165 | 0) > 32767) break L13;
        HEAP16[$pnt2$364 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$165 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$165 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$083;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$270;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$083;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$083;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$364 >> 1] = $62;
        if (($wk_max$165 | 0) > 0) {
         $k$059 = 0;
         $wk$060 = $16;
         while (1) {
          if ((HEAP32[$wk$060 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$060 >> 2] = $62;
          $k$059 = $k$059 + 1 | 0;
          if (($k$059 | 0) >= ($wk_max$165 | 0)) {
           $79 = $62;
           break;
          } else $wk$060 = $wk$060 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$364 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$165 | 0) > 0) {
         $k$156 = 0;
         $wk$157 = $16;
         while (1) {
          if ((HEAP32[$wk$157 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$157 >> 2] = $59;
          $k$156 = $k$156 + 1 | 0;
          if (($k$156 | 0) >= ($wk_max$165 | 0)) {
           $79 = $59;
           break;
          } else $wk$157 = $wk$157 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$270;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$083;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $97 = HEAP16[$pnt2$364 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$364 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$270;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$083;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$270 | 0)) HEAP32[$151 >> 2] = $i$270;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$083;
       $wk_max$2 = $wk_max$165;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$364 >> 1] = $105;
       if (($wk_max$165 | 0) > 0) {
        $k$252 = 0;
        $wk$253 = $16;
        while (1) {
         if ((HEAP32[$wk$253 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$253 >> 2] = $105;
         $k$252 = $k$252 + 1 | 0;
         if (($k$252 | 0) >= ($wk_max$165 | 0)) {
          $122 = $105;
          break;
         } else $wk$253 = $wk$253 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$364 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$165 | 0) > 0) {
        $k$349 = 0;
        $wk$350 = $16;
        while (1) {
         if ((HEAP32[$wk$350 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$350 >> 2] = $102;
         $k$349 = $k$349 + 1 | 0;
         if (($k$349 | 0) >= ($wk_max$165 | 0)) {
          $122 = $102;
          break;
         } else $wk$350 = $wk$350 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$270;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$083;
      $wk_max$2 = $wk_max$165;
     } while (0);
     $i$270 = $i$270 + 1 | 0;
     $216 = $pnt$173 + 1 | 0;
     $217 = $pnt_thresh$172 + 1 | 0;
     $218 = $pnt2$364 + 2 | 0;
     $219 = $dpnt$163 + 1 | 0;
     if (($i$270 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $219;
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $218;
      $pnt_thresh$1$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$163 = $219;
      $pnt$173 = $216;
      $pnt2$364 = $218;
      $pnt_thresh$172 = $217;
      $wk_max$165 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$080;
    $pnt$1$lcssa = $pnt$086;
    $pnt2$3$lcssa = $pnt2$281;
    $pnt_thresh$1$lcssa = $pnt_thresh$085;
    $wk_max$1$lcssa = $wk_max$082;
   }
   $j$083 = $j$083 + 1 | 0;
   if (($j$083 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$080 = $dpnt$1$lcssa + 2 | 0;
    $pnt$086 = $pnt$1$lcssa + 2 | 0;
    $pnt2$281 = $pnt2$3$lcssa + 4 | 0;
    $pnt_thresh$085 = $pnt_thresh$1$lcssa + 2 | 0;
    $wk_max$082 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $227 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$345 = 1;
   $j$146 = 1;
   $wk$447 = $16;
   while (1) {
    $229 = HEAP32[$wk$447 >> 2] | 0;
    if (($229 | 0) == ($i$345 | 0)) {
     $235 = $j$146;
     $j$2 = $j$146 + 1 | 0;
    } else {
     $235 = HEAP32[$labelInfo + 1179664 + ($229 + -1 << 2) >> 2] | 0;
     $j$2 = $j$146;
    }
    HEAP32[$wk$447 >> 2] = $235;
    if (($i$345 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$345 = $i$345 + 1 | 0;
     $j$146 = $j$2;
     $wk$447 = $wk$447 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $239 = $labelInfo + 8 | 0;
  $240 = $j$1$lcssa + -1 | 0;
  HEAP32[$239 >> 2] = $240;
  if (!$240) $$0 = 0; else {
   _memset($227 | 0, 0, $240 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $240 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$443 = 0;
    do {
     $247 = $i$443 << 2;
     HEAP32[$labelInfo + 131084 + ($247 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($247 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($247 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($247 | 3) << 2) >> 2] = 0;
     $i$443 = $i$443 + 1 | 0;
    } while (($i$443 | 0) < (HEAP32[$239 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$541 = 0;
    do {
     $261 = (HEAP32[$labelInfo + 1179664 + ($i$541 << 2) >> 2] | 0) + -1 | 0;
     $262 = $i$541 * 7 | 0;
     $265 = $labelInfo + 12 + ($261 << 2) | 0;
     HEAP32[$265 >> 2] = (HEAP32[$265 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($262 << 2) >> 2] | 0);
     $272 = $261 << 1;
     $273 = $labelInfo + 655376 + ($272 << 3) | 0;
     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 1 << 2) >> 2] | 0);
     $281 = $labelInfo + 655376 + (($272 | 1) << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($262 + 2 << 2) >> 2] | 0);
     $284 = $261 << 2;
     $285 = $labelInfo + 131084 + ($284 << 2) | 0;
     $289 = HEAP32[$labelInfo + 1310736 + ($262 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$285 >> 2] | 0) > ($289 | 0)) HEAP32[$285 >> 2] = $289;
     $292 = $labelInfo + 131084 + (($284 | 1) << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($262 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) < ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($284 | 2) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($262 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) > ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($284 | 3) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($262 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) < ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $i$541 = $i$541 + 1 | 0;
    } while (($i$541 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$239 >> 2] | 0) > 0) {
    $i$640 = 0;
    do {
     $314 = $labelInfo + 12 + ($i$640 << 2) | 0;
     $317 = $i$640 << 1;
     $318 = $labelInfo + 655376 + ($317 << 3) | 0;
     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$314 >> 2] | 0);
     $324 = $labelInfo + 655376 + (($317 | 1) << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$314 >> 2] | 0);
     $i$640 = $i$640 + 1 | 0;
    } while (($i$640 | 0) < (HEAP32[$239 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;
     do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($50 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $50;
       $53 = ($50 << 16 >> 16) * 7 | 0;
       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;
       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;
       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;
       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $74 = $73 << 16 >> 16;
      $75 = $73 << 16 >> 16 > 0;
      if ($69 << 16 >> 16 <= 0) {
       if ($75) {
        HEAP16[$pnt2$368 >> 1] = $73;
        $175 = $74 * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($195 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $195;
        $198 = ($195 << 16 >> 16) * 7 | 0;
        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;
        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;
        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;
        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;
        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;
        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$212 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $215 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $215;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;
        $220 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $215;
        break;
       }
      }
      if ($75) {
       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;
       if (($78 | 0) > ($81 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $81;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $98 = $81;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $98 = $81;
       } else {
        HEAP16[$pnt2$368 >> 1] = $78;
        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $98 = $78;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $98 = $78;
       }
       $100 = ($98 << 16 >> 16) * 7 | 0;
       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;
       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;
       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;
       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($116 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $69;
       $156 = $70 * 7 | 0;
       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;
       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;
       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;
       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($121 | 0) > ($124 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $124;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $141 = $124;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $141 = $124;
      } else {
       HEAP16[$pnt2$368 >> 1] = $121;
       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $141 = $121;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $141 = $121;
      }
      $143 = ($141 << 16 >> 16) * 7 | 0;
      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;
      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $235 = $pnt$169 + 4 | 0;
     $236 = $pnt2$368 + 2 | 0;
     $237 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $237;
      $pnt$1$lcssa = $235;
      $pnt2$3$lcssa = $236;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $237;
      $pnt$169 = $235;
      $pnt2$368 = $236;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $244 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $246 = HEAP32[$wk$444 >> 2] | 0;
    if (($246 | 0) == ($i$342 | 0)) {
     $252 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $252;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $256 = $labelInfo + 8 | 0;
  $257 = $j$1$lcssa + -1 | 0;
  HEAP32[$256 >> 2] = $257;
  if (!$257) $$0 = 0; else {
   _memset($244 | 0, 0, $257 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $264 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $279 = $i$538 * 7 | 0;
     $282 = $labelInfo + 12 + ($278 << 2) | 0;
     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);
     $289 = $278 << 1;
     $290 = $labelInfo + 655376 + ($289 << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);
     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;
     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);
     $301 = $278 << 2;
     $302 = $labelInfo + 131084 + ($301 << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;
     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;
     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;
     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$256 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $334 = $i$637 << 1;
     $335 = $labelInfo + 655376 + ($334 << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;
     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;
     do if ((($33 & 248) + 12 + ($33 << 5 & 224) + ($39 >>> 3 & 24) + ($39 << 2 & 248) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($50 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $50;
       $53 = ($50 << 16 >> 16) * 7 | 0;
       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;
       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;
       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;
       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $74 = $73 << 16 >> 16;
      $75 = $73 << 16 >> 16 > 0;
      if ($69 << 16 >> 16 <= 0) {
       if ($75) {
        HEAP16[$pnt2$368 >> 1] = $73;
        $175 = $74 * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($195 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $195;
        $198 = ($195 << 16 >> 16) * 7 | 0;
        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;
        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;
        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;
        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;
        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;
        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$212 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $215 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $215;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;
        $220 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $215;
        break;
       }
      }
      if ($75) {
       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;
       if (($78 | 0) > ($81 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $81;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $98 = $81;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $98 = $81;
       } else {
        HEAP16[$pnt2$368 >> 1] = $78;
        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $98 = $78;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $98 = $78;
       }
       $100 = ($98 << 16 >> 16) * 7 | 0;
       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;
       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;
       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;
       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($116 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $69;
       $156 = $70 * 7 | 0;
       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;
       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;
       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;
       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($121 | 0) > ($124 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $124;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $141 = $124;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $141 = $124;
      } else {
       HEAP16[$pnt2$368 >> 1] = $121;
       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $141 = $121;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $141 = $121;
      }
      $143 = ($141 << 16 >> 16) * 7 | 0;
      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;
      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $235 = $pnt$169 + 4 | 0;
     $236 = $pnt2$368 + 2 | 0;
     $237 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $237;
      $pnt$1$lcssa = $235;
      $pnt2$3$lcssa = $236;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $237;
      $pnt$169 = $235;
      $pnt2$368 = $236;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $244 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $246 = HEAP32[$wk$444 >> 2] | 0;
    if (($246 | 0) == ($i$342 | 0)) {
     $252 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $252;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $256 = $labelInfo + 8 | 0;
  $257 = $j$1$lcssa + -1 | 0;
  HEAP32[$256 >> 2] = $257;
  if (!$257) $$0 = 0; else {
   _memset($244 | 0, 0, $257 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $264 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $279 = $i$538 * 7 | 0;
     $282 = $labelInfo + 12 + ($278 << 2) | 0;
     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);
     $289 = $278 << 1;
     $290 = $labelInfo + 655376 + ($289 << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);
     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;
     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);
     $301 = $278 << 2;
     $302 = $labelInfo + 131084 + ($301 << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;
     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;
     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;
     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$256 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $334 = $i$637 << 1;
     $335 = $labelInfo + 655376 + ($334 << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;
     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;
     do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($50 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $50;
       $53 = ($50 << 16 >> 16) * 7 | 0;
       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;
       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;
       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;
       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $74 = $73 << 16 >> 16;
      $75 = $73 << 16 >> 16 > 0;
      if ($69 << 16 >> 16 <= 0) {
       if ($75) {
        HEAP16[$pnt2$368 >> 1] = $73;
        $175 = $74 * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($195 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $195;
        $198 = ($195 << 16 >> 16) * 7 | 0;
        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;
        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;
        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;
        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;
        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;
        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$212 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $215 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $215;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;
        $220 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $215;
        break;
       }
      }
      if ($75) {
       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;
       if (($78 | 0) > ($81 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $81;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $98 = $81;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $98 = $81;
       } else {
        HEAP16[$pnt2$368 >> 1] = $78;
        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $98 = $78;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $98 = $78;
       }
       $100 = ($98 << 16 >> 16) * 7 | 0;
       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;
       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;
       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;
       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($116 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $69;
       $156 = $70 * 7 | 0;
       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;
       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;
       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;
       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($121 | 0) > ($124 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $124;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $141 = $124;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $141 = $124;
      } else {
       HEAP16[$pnt2$368 >> 1] = $121;
       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $141 = $121;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $141 = $121;
      }
      $143 = ($141 << 16 >> 16) * 7 | 0;
      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;
      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $235 = $pnt$169 + 4 | 0;
     $236 = $pnt2$368 + 2 | 0;
     $237 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $237;
      $pnt$1$lcssa = $235;
      $pnt2$3$lcssa = $236;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $237;
      $pnt$169 = $235;
      $pnt2$368 = $236;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $244 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $246 = HEAP32[$wk$444 >> 2] | 0;
    if (($246 | 0) == ($i$342 | 0)) {
     $252 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $252;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $256 = $labelInfo + 8 | 0;
  $257 = $j$1$lcssa + -1 | 0;
  HEAP32[$256 >> 2] = $257;
  if (!$257) $$0 = 0; else {
   _memset($244 | 0, 0, $257 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $264 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $279 = $i$538 * 7 | 0;
     $282 = $labelInfo + 12 + ($278 << 2) | 0;
     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);
     $289 = $278 << 1;
     $290 = $labelInfo + 655376 + ($289 << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);
     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;
     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);
     $301 = $278 << 2;
     $302 = $labelInfo + 131084 + ($301 << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;
     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;
     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;
     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$256 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $334 = $i$637 << 1;
     $335 = $labelInfo + 655376 + ($334 << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;
     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $106 = 0, $11 = 0, $110 = 0, $116 = 0, $12 = 0, $121 = 0, $124 = 0, $141 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $175 = 0, $177 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $212 = 0, $215 = 0, $22 = 0, $220 = 0, $235 = 0, $236 = 0, $237 = 0, $244 = 0, $246 = 0, $252 = 0, $256 = 0, $257 = 0, $264 = 0, $278 = 0, $279 = 0, $282 = 0, $289 = 0, $290 = 0, $298 = 0, $3 = 0, $301 = 0, $302 = 0, $306 = 0, $309 = 0, $31 = 0, $313 = 0, $316 = 0, $320 = 0, $323 = 0, $327 = 0, $33 = 0, $331 = 0, $334 = 0, $335 = 0, $341 = 0, $39 = 0, $50 = 0, $53 = 0, $55 = 0, $59 = 0, $63 = 0, $69 = 0, $70 = 0, $73 = 0, $74 = 0, $75 = 0, $78 = 0, $81 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     $39 = HEAPU8[$pnt$169 + 1 >> 0] | 0;
     do if ((($33 & 248) + 10 + ($33 << 5 & 224) + ($39 >>> 3 & 28) + ($39 << 3 & 248) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $50 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($50 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $50;
       $53 = ($50 << 16 >> 16) * 7 | 0;
       $55 = $labelInfo + 1310736 + ($53 + -7 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + 1;
       $59 = $labelInfo + 1310736 + ($53 + -6 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $i$265;
       $63 = $labelInfo + 1310736 + ($53 + -5 << 2) | 0;
       HEAP32[$63 >> 2] = (HEAP32[$63 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($53 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $69 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $73 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $74 = $73 << 16 >> 16;
      $75 = $73 << 16 >> 16 > 0;
      if ($69 << 16 >> 16 <= 0) {
       if ($75) {
        HEAP16[$pnt2$368 >> 1] = $73;
        $175 = $74 * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$265;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$076;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) < ($i$265 | 0)) HEAP32[$189 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($175 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $195 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($195 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $195;
        $198 = ($195 << 16 >> 16) * 7 | 0;
        $200 = $labelInfo + 1310736 + ($198 + -7 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + 1;
        $204 = $labelInfo + 1310736 + ($198 + -6 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $i$265;
        $208 = $labelInfo + 1310736 + ($198 + -5 << 2) | 0;
        HEAP32[$208 >> 2] = (HEAP32[$208 >> 2] | 0) + $j$076;
        $212 = $labelInfo + 1310736 + ($198 + -3 << 2) | 0;
        if ((HEAP32[$212 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$212 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $215 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $215;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $215 << 16 >> 16;
        $220 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($220 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($220 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($220 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($220 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $215;
        break;
       }
      }
      if ($75) {
       $78 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       $81 = HEAP32[$labelInfo + 1179664 + ($74 + -1 << 2) >> 2] | 0;
       if (($78 | 0) > ($81 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $81;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$057 >> 2] = $81;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $98 = $81;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $98 = $81;
       } else {
        HEAP16[$pnt2$368 >> 1] = $78;
        if (($78 | 0) < ($81 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($81 | 0)) HEAP32[$wk$154 >> 2] = $78;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $98 = $78;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $98 = $78;
       }
       $100 = ($98 << 16 >> 16) * 7 | 0;
       $102 = $labelInfo + 1310736 + ($100 + -7 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + 1;
       $106 = $labelInfo + 1310736 + ($100 + -6 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $i$265;
       $110 = $labelInfo + 1310736 + ($100 + -5 << 2) | 0;
       HEAP32[$110 >> 2] = (HEAP32[$110 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($100 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($116 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $69;
       $156 = $70 * 7 | 0;
       $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
       $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$265;
       $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
       HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$076;
       $170 = $labelInfo + 1310736 + ($156 + -4 << 2) | 0;
       if ((HEAP32[$170 >> 2] | 0) > ($i$265 | 0)) HEAP32[$170 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $121 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
      $124 = HEAP32[$labelInfo + 1179664 + (($116 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($121 | 0) > ($124 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $124;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$250 >> 2] = $124;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $141 = $124;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $141 = $124;
      } else {
       HEAP16[$pnt2$368 >> 1] = $121;
       if (($121 | 0) < ($124 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($124 | 0)) HEAP32[$wk$347 >> 2] = $121;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $141 = $121;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $141 = $121;
      }
      $143 = ($141 << 16 >> 16) * 7 | 0;
      $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
      $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$265;
      $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
      HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $235 = $pnt$169 + 4 | 0;
     $236 = $pnt2$368 + 2 | 0;
     $237 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $237;
      $pnt$1$lcssa = $235;
      $pnt2$3$lcssa = $236;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $237;
      $pnt$169 = $235;
      $pnt2$368 = $236;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $244 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $246 = HEAP32[$wk$444 >> 2] | 0;
    if (($246 | 0) == ($i$342 | 0)) {
     $252 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $252 = HEAP32[$labelInfo + 1179664 + ($246 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $252;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $256 = $labelInfo + 8 | 0;
  $257 = $j$1$lcssa + -1 | 0;
  HEAP32[$256 >> 2] = $257;
  if (!$257) $$0 = 0; else {
   _memset($244 | 0, 0, $257 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $257 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $264 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($264 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($264 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($264 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($264 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$256 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $278 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $279 = $i$538 * 7 | 0;
     $282 = $labelInfo + 12 + ($278 << 2) | 0;
     HEAP32[$282 >> 2] = (HEAP32[$282 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($279 << 2) >> 2] | 0);
     $289 = $278 << 1;
     $290 = $labelInfo + 655376 + ($289 << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 1 << 2) >> 2] | 0);
     $298 = $labelInfo + 655376 + (($289 | 1) << 3) | 0;
     HEAPF64[$298 >> 3] = +HEAPF64[$298 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($279 + 2 << 2) >> 2] | 0);
     $301 = $278 << 2;
     $302 = $labelInfo + 131084 + ($301 << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($279 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($301 | 1) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($279 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $316 = $labelInfo + 131084 + (($301 | 2) << 2) | 0;
     $320 = HEAP32[$labelInfo + 1310736 + ($279 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$316 >> 2] | 0) > ($320 | 0)) HEAP32[$316 >> 2] = $320;
     $323 = $labelInfo + 131084 + (($301 | 3) << 2) | 0;
     $327 = HEAP32[$labelInfo + 1310736 + ($279 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$323 >> 2] | 0) < ($327 | 0)) HEAP32[$323 >> 2] = $327;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$256 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $331 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $334 = $i$637 << 1;
     $335 = $labelInfo + 655376 + ($334 << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $341 = $labelInfo + 655376 + (($334 | 1) << 3) | 0;
     HEAPF64[$341 >> 3] = +HEAPF64[$341 >> 3] / +(HEAP32[$331 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$256 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$368 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$208 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $211 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $77;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $94 = $77;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$368 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $94 = $74;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $120;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $137 = $120;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$368 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $137 = $117;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $231 = $pnt$169 + 4 | 0;
     $232 = $pnt2$368 + 2 | 0;
     $233 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $233;
      $pnt$169 = $231;
      $pnt2$368 = $232;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $242 = HEAP32[$wk$444 >> 2] | 0;
    if (($242 | 0) == ($i$342 | 0)) {
     $248 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $248;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $260 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$538 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $330 = $i$637 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $106 = 0, $11 = 0, $112 = 0, $117 = 0, $12 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $171 = 0, $173 = 0, $177 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $22 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $294 = 0, $297 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $33 = 0, $330 = 0, $331 = 0, $337 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $22 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     $33 = HEAPU8[$pnt$169 >> 0] | 0;
     do if ((($33 & 240) + 24 + ($33 << 4 & 240) + ((HEAPU8[$pnt$169 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $46 = HEAP16[$pnt2$368 + ($22 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$265;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $65 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$368 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$265;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$076;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$265 | 0)) HEAP32[$185 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $191 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$265;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$076;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$208 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $211 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $77;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$057 >> 2] = $77;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $94 = $77;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$368 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$154 >> 2] = $74;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $94 = $74;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$265;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $112 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$265;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$076;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$265 | 0)) HEAP32[$166 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $120;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$250 >> 2] = $120;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $137 = $120;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$368 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$347 >> 2] = $117;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $137 = $117;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$265;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $231 = $pnt$169 + 4 | 0;
     $232 = $pnt2$368 + 2 | 0;
     $233 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $233;
      $pnt$169 = $231;
      $pnt2$368 = $232;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $242 = HEAP32[$wk$444 >> 2] | 0;
    if (($242 | 0) == ($i$342 | 0)) {
     $248 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $248;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $260 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$538 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $330 = $i$637 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize * 3 | 0) + 12 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($44 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $44;
       $47 = ($44 << 16 >> 16) * 7 | 0;
       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;
       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;
       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;
       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $68 = $67 << 16 >> 16;
      $69 = $67 << 16 >> 16 > 0;
      if ($63 << 16 >> 16 <= 0) {
       if ($69) {
        HEAP16[$pnt2$368 >> 1] = $67;
        $169 = $68 * 7 | 0;
        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;
        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;
        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;
        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;
        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($189 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $189;
        $192 = ($189 << 16 >> 16) * 7 | 0;
        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;
        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;
        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;
        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;
        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;
        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$206 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $209 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $209;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;
        $214 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $209;
        break;
       }
      }
      if ($69) {
       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;
       if (($72 | 0) > ($75 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $75;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $92 = $75;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $92 = $75;
       } else {
        HEAP16[$pnt2$368 >> 1] = $72;
        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $92 = $72;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $92 = $72;
       }
       $94 = ($92 << 16 >> 16) * 7 | 0;
       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;
       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;
       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;
       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($110 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $63;
       $150 = $64 * 7 | 0;
       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;
       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;
       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;
       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;
       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;
       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($115 | 0) > ($118 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $118;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $135 = $118;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $135 = $118;
      } else {
       HEAP16[$pnt2$368 >> 1] = $115;
       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $135 = $115;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $135 = $115;
      }
      $137 = ($135 << 16 >> 16) * 7 | 0;
      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;
      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $229 = $pnt$169 + 6 | 0;
     $230 = $pnt2$368 + 2 | 0;
     $231 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $231;
      $pnt$1$lcssa = $229;
      $pnt2$3$lcssa = $230;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $231;
      $pnt$169 = $229;
      $pnt2$368 = $230;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $238 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $240 = HEAP32[$wk$444 >> 2] | 0;
    if (($240 | 0) == ($i$342 | 0)) {
     $246 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $246;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $250 = $labelInfo + 8 | 0;
  $251 = $j$1$lcssa + -1 | 0;
  HEAP32[$250 >> 2] = $251;
  if (!$251) $$0 = 0; else {
   _memset($238 | 0, 0, $251 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $258 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $273 = $i$538 * 7 | 0;
     $276 = $labelInfo + 12 + ($272 << 2) | 0;
     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);
     $283 = $272 << 1;
     $284 = $labelInfo + 655376 + ($283 << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);
     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;
     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);
     $295 = $272 << 2;
     $296 = $labelInfo + 131084 + ($295 << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;
     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$250 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $328 = $i$637 << 1;
     $329 = $labelInfo + 655376 + ($328 << 3) | 0;
     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize * 3 | 0) + 12 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize * 6 | 0) + 6) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($44 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $44;
       $47 = ($44 << 16 >> 16) * 7 | 0;
       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;
       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;
       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;
       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $68 = $67 << 16 >> 16;
      $69 = $67 << 16 >> 16 > 0;
      if ($63 << 16 >> 16 <= 0) {
       if ($69) {
        HEAP16[$pnt2$368 >> 1] = $67;
        $169 = $68 * 7 | 0;
        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;
        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;
        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;
        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;
        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($189 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $189;
        $192 = ($189 << 16 >> 16) * 7 | 0;
        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;
        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;
        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;
        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;
        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;
        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$206 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $209 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $209;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;
        $214 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $209;
        break;
       }
      }
      if ($69) {
       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;
       if (($72 | 0) > ($75 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $75;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $92 = $75;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $92 = $75;
       } else {
        HEAP16[$pnt2$368 >> 1] = $72;
        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $92 = $72;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $92 = $72;
       }
       $94 = ($92 << 16 >> 16) * 7 | 0;
       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;
       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;
       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;
       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($110 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $63;
       $150 = $64 * 7 | 0;
       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;
       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;
       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;
       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;
       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;
       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($115 | 0) > ($118 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $118;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $135 = $118;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $135 = $118;
      } else {
       HEAP16[$pnt2$368 >> 1] = $115;
       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $135 = $115;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $135 = $115;
      }
      $137 = ($135 << 16 >> 16) * 7 | 0;
      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;
      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $229 = $pnt$169 + 6 | 0;
     $230 = $pnt2$368 + 2 | 0;
     $231 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $231;
      $pnt$1$lcssa = $229;
      $pnt2$3$lcssa = $230;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $231;
      $pnt$169 = $229;
      $pnt2$368 = $230;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $238 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $240 = HEAP32[$wk$444 >> 2] | 0;
    if (($240 | 0) == ($i$342 | 0)) {
     $246 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $246;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $250 = $labelInfo + 8 | 0;
  $251 = $j$1$lcssa + -1 | 0;
  HEAP32[$250 >> 2] = $251;
  if (!$251) $$0 = 0; else {
   _memset($238 | 0, 0, $251 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $258 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $273 = $i$538 * 7 | 0;
     $276 = $labelInfo + 12 + ($272 << 2) | 0;
     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);
     $283 = $272 << 1;
     $284 = $labelInfo + 655376 + ($283 << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);
     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;
     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);
     $295 = $272 << 2;
     $296 = $labelInfo + 131084 + ($295 << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;
     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$250 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $328 = $i$637 << 1;
     $329 = $labelInfo + 655376 + ($328 << 3) | 0;
     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($45 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $45;
       $48 = ($45 << 16 >> 16) * 7 | 0;
       $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1;
       $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265;
       $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0;
       HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $69 = $68 << 16 >> 16;
      $70 = $68 << 16 >> 16 > 0;
      if ($64 << 16 >> 16 <= 0) {
       if ($70) {
        HEAP16[$pnt2$368 >> 1] = $68;
        $170 = $69 * 7 | 0;
        $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1;
        $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265;
        $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0;
        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076;
        $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0;
        if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($190 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $190;
        $193 = ($190 << 16 >> 16) * 7 | 0;
        $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1;
        $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265;
        $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0;
        HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076;
        $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0;
        if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$207 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $210 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $210;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16;
        $215 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $210;
        break;
       }
      }
      if ($70) {
       $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0;
       if (($73 | 0) > ($76 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $76;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $93 = $76;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $93 = $76;
       } else {
        HEAP16[$pnt2$368 >> 1] = $73;
        if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $93 = $73;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $93 = $73;
       }
       $95 = ($93 << 16 >> 16) * 7 | 0;
       $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1;
       $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265;
       $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0;
       HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($111 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $64;
       $151 = $65 * 7 | 0;
       $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1;
       $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265;
       $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0;
       HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076;
       $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0;
       if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
      $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($116 | 0) > ($119 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $119;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $136 = $119;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $136 = $119;
      } else {
       HEAP16[$pnt2$368 >> 1] = $116;
       if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $136 = $116;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $136 = $116;
      }
      $138 = ($136 << 16 >> 16) * 7 | 0;
      $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
      $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265;
      $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
      HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $230 = $pnt$169 + 8 | 0;
     $231 = $pnt2$368 + 2 | 0;
     $232 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $232;
      $pnt$1$lcssa = $230;
      $pnt2$3$lcssa = $231;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $232;
      $pnt$169 = $230;
      $pnt2$368 = $231;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $241 = HEAP32[$wk$444 >> 2] | 0;
    if (($241 | 0) == ($i$342 | 0)) {
     $247 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $247;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $259 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$538 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $329 = $i$637 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $105 = 0, $11 = 0, $111 = 0, $116 = 0, $119 = 0, $12 = 0, $136 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $151 = 0, $153 = 0, $157 = 0, $161 = 0, $165 = 0, $170 = 0, $172 = 0, $176 = 0, $180 = 0, $184 = 0, $19 = 0, $190 = 0, $193 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $207 = 0, $21 = 0, $210 = 0, $215 = 0, $230 = 0, $231 = 0, $232 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $45 = 0, $48 = 0, $50 = 0, $54 = 0, $58 = 0, $64 = 0, $65 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $76 = 0, $93 = 0, $95 = 0, $97 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 2 >> 0] | 0) + (HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 + 3 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $45 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($45 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $45;
       $48 = ($45 << 16 >> 16) * 7 | 0;
       $50 = $labelInfo + 1310736 + ($48 + -7 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + 1;
       $54 = $labelInfo + 1310736 + ($48 + -6 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $i$265;
       $58 = $labelInfo + 1310736 + ($48 + -5 << 2) | 0;
       HEAP32[$58 >> 2] = (HEAP32[$58 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($48 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $64 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $68 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $69 = $68 << 16 >> 16;
      $70 = $68 << 16 >> 16 > 0;
      if ($64 << 16 >> 16 <= 0) {
       if ($70) {
        HEAP16[$pnt2$368 >> 1] = $68;
        $170 = $69 * 7 | 0;
        $172 = $labelInfo + 1310736 + ($170 + -7 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + 1;
        $176 = $labelInfo + 1310736 + ($170 + -6 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $i$265;
        $180 = $labelInfo + 1310736 + ($170 + -5 << 2) | 0;
        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + $j$076;
        $184 = $labelInfo + 1310736 + ($170 + -3 << 2) | 0;
        if ((HEAP32[$184 >> 2] | 0) < ($i$265 | 0)) HEAP32[$184 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($170 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $190 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($190 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $190;
        $193 = ($190 << 16 >> 16) * 7 | 0;
        $195 = $labelInfo + 1310736 + ($193 + -7 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + 1;
        $199 = $labelInfo + 1310736 + ($193 + -6 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $i$265;
        $203 = $labelInfo + 1310736 + ($193 + -5 << 2) | 0;
        HEAP32[$203 >> 2] = (HEAP32[$203 >> 2] | 0) + $j$076;
        $207 = $labelInfo + 1310736 + ($193 + -3 << 2) | 0;
        if ((HEAP32[$207 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$207 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $210 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $210;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $210 << 16 >> 16;
        $215 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($215 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($215 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($215 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($215 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($215 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $210;
        break;
       }
      }
      if ($70) {
       $73 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       $76 = HEAP32[$labelInfo + 1179664 + ($69 + -1 << 2) >> 2] | 0;
       if (($73 | 0) > ($76 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $76;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$057 >> 2] = $76;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $93 = $76;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $93 = $76;
       } else {
        HEAP16[$pnt2$368 >> 1] = $73;
        if (($73 | 0) < ($76 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($76 | 0)) HEAP32[$wk$154 >> 2] = $73;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $93 = $73;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $93 = $73;
       }
       $95 = ($93 << 16 >> 16) * 7 | 0;
       $97 = $labelInfo + 1310736 + ($95 + -7 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + 1;
       $101 = $labelInfo + 1310736 + ($95 + -6 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $i$265;
       $105 = $labelInfo + 1310736 + ($95 + -5 << 2) | 0;
       HEAP32[$105 >> 2] = (HEAP32[$105 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($95 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $111 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($111 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $64;
       $151 = $65 * 7 | 0;
       $153 = $labelInfo + 1310736 + ($151 + -7 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + 1;
       $157 = $labelInfo + 1310736 + ($151 + -6 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $i$265;
       $161 = $labelInfo + 1310736 + ($151 + -5 << 2) | 0;
       HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $j$076;
       $165 = $labelInfo + 1310736 + ($151 + -4 << 2) | 0;
       if ((HEAP32[$165 >> 2] | 0) > ($i$265 | 0)) HEAP32[$165 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($151 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $116 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
      $119 = HEAP32[$labelInfo + 1179664 + (($111 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($116 | 0) > ($119 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $119;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$250 >> 2] = $119;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $136 = $119;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $136 = $119;
      } else {
       HEAP16[$pnt2$368 >> 1] = $116;
       if (($116 | 0) < ($119 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($119 | 0)) HEAP32[$wk$347 >> 2] = $116;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $136 = $116;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $136 = $116;
      }
      $138 = ($136 << 16 >> 16) * 7 | 0;
      $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
      $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$265;
      $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
      HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $230 = $pnt$169 + 8 | 0;
     $231 = $pnt2$368 + 2 | 0;
     $232 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $232;
      $pnt$1$lcssa = $230;
      $pnt2$3$lcssa = $231;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $232;
      $pnt$169 = $230;
      $pnt2$368 = $231;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $241 = HEAP32[$wk$444 >> 2] | 0;
    if (($241 | 0) == ($i$342 | 0)) {
     $247 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $247;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $259 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$538 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $329 = $i$637 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($44 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $44;
       $47 = ($44 << 16 >> 16) * 7 | 0;
       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;
       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;
       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;
       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $68 = $67 << 16 >> 16;
      $69 = $67 << 16 >> 16 > 0;
      if ($63 << 16 >> 16 <= 0) {
       if ($69) {
        HEAP16[$pnt2$368 >> 1] = $67;
        $169 = $68 * 7 | 0;
        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;
        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;
        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;
        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;
        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($189 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $189;
        $192 = ($189 << 16 >> 16) * 7 | 0;
        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;
        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;
        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;
        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;
        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;
        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$206 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $209 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $209;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;
        $214 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $209;
        break;
       }
      }
      if ($69) {
       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;
       if (($72 | 0) > ($75 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $75;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $92 = $75;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $92 = $75;
       } else {
        HEAP16[$pnt2$368 >> 1] = $72;
        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $92 = $72;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $92 = $72;
       }
       $94 = ($92 << 16 >> 16) * 7 | 0;
       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;
       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;
       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;
       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($110 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $63;
       $150 = $64 * 7 | 0;
       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;
       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;
       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;
       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;
       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;
       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($115 | 0) > ($118 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $118;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $135 = $118;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $135 = $118;
      } else {
       HEAP16[$pnt2$368 >> 1] = $115;
       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $135 = $115;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $135 = $115;
      }
      $137 = ($135 << 16 >> 16) * 7 | 0;
      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;
      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $229 = $pnt$169 + 8 | 0;
     $230 = $pnt2$368 + 2 | 0;
     $231 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $231;
      $pnt$1$lcssa = $229;
      $pnt2$3$lcssa = $230;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $231;
      $pnt$169 = $229;
      $pnt2$368 = $230;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $238 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $240 = HEAP32[$wk$444 >> 2] | 0;
    if (($240 | 0) == ($i$342 | 0)) {
     $246 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $246;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $250 = $labelInfo + 8 | 0;
  $251 = $j$1$lcssa + -1 | 0;
  HEAP32[$250 >> 2] = $251;
  if (!$251) $$0 = 0; else {
   _memset($238 | 0, 0, $251 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $258 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $273 = $i$538 * 7 | 0;
     $276 = $labelInfo + 12 + ($272 << 2) | 0;
     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);
     $283 = $272 << 1;
     $284 = $labelInfo + 655376 + ($283 << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);
     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;
     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);
     $295 = $272 << 2;
     $296 = $labelInfo + 131084 + ($295 << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;
     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$250 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $328 = $i$637 << 1;
     $329 = $labelInfo + 655376 + ($328 << 3) | 0;
     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $104 = 0, $11 = 0, $110 = 0, $115 = 0, $118 = 0, $12 = 0, $135 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $150 = 0, $152 = 0, $156 = 0, $160 = 0, $164 = 0, $169 = 0, $171 = 0, $175 = 0, $179 = 0, $183 = 0, $189 = 0, $19 = 0, $192 = 0, $194 = 0, $198 = 0, $2 = 0, $20 = 0, $202 = 0, $206 = 0, $209 = 0, $21 = 0, $214 = 0, $229 = 0, $230 = 0, $231 = 0, $238 = 0, $240 = 0, $246 = 0, $250 = 0, $251 = 0, $258 = 0, $272 = 0, $273 = 0, $276 = 0, $283 = 0, $284 = 0, $292 = 0, $295 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $314 = 0, $317 = 0, $321 = 0, $325 = 0, $328 = 0, $329 = 0, $335 = 0, $44 = 0, $47 = 0, $49 = 0, $53 = 0, $57 = 0, $63 = 0, $64 = 0, $67 = 0, $68 = 0, $69 = 0, $72 = 0, $75 = 0, $92 = 0, $94 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $31 = ($12 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $20 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$279 = $2 + ($20 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($31) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if (((HEAPU8[$pnt$169 + 1 >> 0] | 0) + (HEAPU8[$pnt$169 >> 0] | 0) + (HEAPU8[$pnt$169 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $44 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($44 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $44;
       $47 = ($44 << 16 >> 16) * 7 | 0;
       $49 = $labelInfo + 1310736 + ($47 + -7 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;
       $53 = $labelInfo + 1310736 + ($47 + -6 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $i$265;
       $57 = $labelInfo + 1310736 + ($47 + -5 << 2) | 0;
       HEAP32[$57 >> 2] = (HEAP32[$57 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($47 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $63 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $67 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $68 = $67 << 16 >> 16;
      $69 = $67 << 16 >> 16 > 0;
      if ($63 << 16 >> 16 <= 0) {
       if ($69) {
        HEAP16[$pnt2$368 >> 1] = $67;
        $169 = $68 * 7 | 0;
        $171 = $labelInfo + 1310736 + ($169 + -7 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + 1;
        $175 = $labelInfo + 1310736 + ($169 + -6 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $i$265;
        $179 = $labelInfo + 1310736 + ($169 + -5 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + $j$076;
        $183 = $labelInfo + 1310736 + ($169 + -3 << 2) | 0;
        if ((HEAP32[$183 >> 2] | 0) < ($i$265 | 0)) HEAP32[$183 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($169 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $189 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($189 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $189;
        $192 = ($189 << 16 >> 16) * 7 | 0;
        $194 = $labelInfo + 1310736 + ($192 + -7 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + 1;
        $198 = $labelInfo + 1310736 + ($192 + -6 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $i$265;
        $202 = $labelInfo + 1310736 + ($192 + -5 << 2) | 0;
        HEAP32[$202 >> 2] = (HEAP32[$202 >> 2] | 0) + $j$076;
        $206 = $labelInfo + 1310736 + ($192 + -3 << 2) | 0;
        if ((HEAP32[$206 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$206 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $209 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $209;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $209 << 16 >> 16;
        $214 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($214 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($214 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($214 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($214 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $209;
        break;
       }
      }
      if ($69) {
       $72 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       $75 = HEAP32[$labelInfo + 1179664 + ($68 + -1 << 2) >> 2] | 0;
       if (($72 | 0) > ($75 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $75;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $19;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$057 >> 2] = $75;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $92 = $75;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $92 = $75;
       } else {
        HEAP16[$pnt2$368 >> 1] = $72;
        if (($72 | 0) < ($75 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $19;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$154 >> 2] = $72;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $92 = $72;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $92 = $72;
       }
       $94 = ($92 << 16 >> 16) * 7 | 0;
       $96 = $labelInfo + 1310736 + ($94 + -7 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + 1;
       $100 = $labelInfo + 1310736 + ($94 + -6 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $i$265;
       $104 = $labelInfo + 1310736 + ($94 + -5 << 2) | 0;
       HEAP32[$104 >> 2] = (HEAP32[$104 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($94 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $110 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($110 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $63;
       $150 = $64 * 7 | 0;
       $152 = $labelInfo + 1310736 + ($150 + -7 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + 1;
       $156 = $labelInfo + 1310736 + ($150 + -6 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $i$265;
       $160 = $labelInfo + 1310736 + ($150 + -5 << 2) | 0;
       HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $j$076;
       $164 = $labelInfo + 1310736 + ($150 + -4 << 2) | 0;
       if ((HEAP32[$164 >> 2] | 0) > ($i$265 | 0)) HEAP32[$164 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($150 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $115 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
      $118 = HEAP32[$labelInfo + 1179664 + (($110 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($115 | 0) > ($118 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $118;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $19;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$250 >> 2] = $118;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $135 = $118;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $135 = $118;
      } else {
       HEAP16[$pnt2$368 >> 1] = $115;
       if (($115 | 0) < ($118 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $19;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$347 >> 2] = $115;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $135 = $115;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $135 = $115;
      }
      $137 = ($135 << 16 >> 16) * 7 | 0;
      $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
      $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$265;
      $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
      HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $229 = $pnt$169 + 8 | 0;
     $230 = $pnt2$368 + 2 | 0;
     $231 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($12 | 0)) {
      $dpnt$1$lcssa = $231;
      $pnt$1$lcssa = $229;
      $pnt2$3$lcssa = $230;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $231;
      $pnt$169 = $229;
      $pnt2$368 = $230;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $238 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $19;
   while (1) {
    $240 = HEAP32[$wk$444 >> 2] | 0;
    if (($240 | 0) == ($i$342 | 0)) {
     $246 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $246 = HEAP32[$labelInfo + 1179664 + ($240 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $246;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $250 = $labelInfo + 8 | 0;
  $251 = $j$1$lcssa + -1 | 0;
  HEAP32[$250 >> 2] = $251;
  if (!$251) $$0 = 0; else {
   _memset($238 | 0, 0, $251 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $251 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $258 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($258 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($258 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($258 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($258 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$250 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $272 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $273 = $i$538 * 7 | 0;
     $276 = $labelInfo + 12 + ($272 << 2) | 0;
     HEAP32[$276 >> 2] = (HEAP32[$276 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($273 << 2) >> 2] | 0);
     $283 = $272 << 1;
     $284 = $labelInfo + 655376 + ($283 << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 1 << 2) >> 2] | 0);
     $292 = $labelInfo + 655376 + (($283 | 1) << 3) | 0;
     HEAPF64[$292 >> 3] = +HEAPF64[$292 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($273 + 2 << 2) >> 2] | 0);
     $295 = $272 << 2;
     $296 = $labelInfo + 131084 + ($295 << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($273 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($295 | 1) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($273 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($295 | 2) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($273 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) > ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $317 = $labelInfo + 131084 + (($295 | 3) << 2) | 0;
     $321 = HEAP32[$labelInfo + 1310736 + ($273 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$317 >> 2] | 0) < ($321 | 0)) HEAP32[$317 >> 2] = $321;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$250 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $325 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $328 = $i$637 << 1;
     $329 = $labelInfo + 655376 + ($328 << 3) | 0;
     HEAPF64[$329 >> 3] = +HEAPF64[$329 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $335 = $labelInfo + 655376 + (($328 | 1) << 3) | 0;
     HEAPF64[$335 >> 3] = +HEAPF64[$335 >> 3] / +(HEAP32[$325 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$250 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;
     do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$367 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$208 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $211 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $77;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $94 = $77;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$367 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $94 = $74;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $120;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $137 = $120;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$367 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $137 = $117;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $231 = $pnt$168 + 2 | 0;
     $232 = $pnt2$367 + 2 | 0;
     $233 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $233;
      $pnt$168 = $231;
      $pnt2$367 = $232;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $242 = HEAP32[$wk$443 >> 2] | 0;
    if (($242 | 0) == ($i$341 | 0)) {
     $248 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $248;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $260 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$537 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $330 = $i$636 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;
     do if ((($29 & 248) + 12 + ($29 << 5 & 224) + ($35 >>> 3 & 24) + ($35 << 2 & 248) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$367 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$208 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $211 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $77;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $94 = $77;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$367 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $94 = $74;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $120;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $137 = $120;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$367 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $137 = $117;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $231 = $pnt$168 + 2 | 0;
     $232 = $pnt2$367 + 2 | 0;
     $233 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $233;
      $pnt$168 = $231;
      $pnt2$367 = $232;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $242 = HEAP32[$wk$443 >> 2] | 0;
    if (($242 | 0) == ($i$341 | 0)) {
     $248 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $248;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $260 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$537 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $330 = $i$636 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;
     do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$367 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$208 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $211 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $77;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $94 = $77;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$367 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $94 = $74;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $120;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $137 = $120;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$367 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $137 = $117;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $231 = $pnt$168 + 2 | 0;
     $232 = $pnt2$367 + 2 | 0;
     $233 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $233;
      $pnt$168 = $231;
      $pnt2$367 = $232;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $242 = HEAP32[$wk$443 >> 2] | 0;
    if (($242 | 0) == ($i$341 | 0)) {
     $248 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $248;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $260 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$537 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $330 = $i$636 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $106 = 0, $112 = 0, $117 = 0, $120 = 0, $137 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $152 = 0, $154 = 0, $158 = 0, $162 = 0, $166 = 0, $17 = 0, $171 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $19 = 0, $191 = 0, $194 = 0, $196 = 0, $200 = 0, $204 = 0, $208 = 0, $211 = 0, $216 = 0, $231 = 0, $232 = 0, $233 = 0, $240 = 0, $242 = 0, $248 = 0, $252 = 0, $253 = 0, $260 = 0, $27 = 0, $274 = 0, $275 = 0, $278 = 0, $285 = 0, $286 = 0, $29 = 0, $294 = 0, $297 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $319 = 0, $323 = 0, $327 = 0, $330 = 0, $331 = 0, $337 = 0, $35 = 0, $46 = 0, $49 = 0, $51 = 0, $55 = 0, $59 = 0, $65 = 0, $66 = 0, $69 = 0, $70 = 0, $71 = 0, $74 = 0, $77 = 0, $9 = 0, $94 = 0, $96 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     $35 = HEAPU8[$pnt$168 + 1 >> 0] | 0;
     do if ((($29 & 248) + 10 + ($29 << 5 & 224) + ($35 >>> 3 & 28) + ($35 << 3 & 248) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $46 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($46 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $46;
       $49 = ($46 << 16 >> 16) * 7 | 0;
       $51 = $labelInfo + 1310736 + ($49 + -7 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + 1;
       $55 = $labelInfo + 1310736 + ($49 + -6 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $i$264;
       $59 = $labelInfo + 1310736 + ($49 + -5 << 2) | 0;
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($49 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $65 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $69 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $70 = $69 << 16 >> 16;
      $71 = $69 << 16 >> 16 > 0;
      if ($65 << 16 >> 16 <= 0) {
       if ($71) {
        HEAP16[$pnt2$367 >> 1] = $69;
        $171 = $70 * 7 | 0;
        $173 = $labelInfo + 1310736 + ($171 + -7 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + 1;
        $177 = $labelInfo + 1310736 + ($171 + -6 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $i$264;
        $181 = $labelInfo + 1310736 + ($171 + -5 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $j$075;
        $185 = $labelInfo + 1310736 + ($171 + -3 << 2) | 0;
        if ((HEAP32[$185 >> 2] | 0) < ($i$264 | 0)) HEAP32[$185 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($171 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $191 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($191 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $191;
        $194 = ($191 << 16 >> 16) * 7 | 0;
        $196 = $labelInfo + 1310736 + ($194 + -7 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + 1;
        $200 = $labelInfo + 1310736 + ($194 + -6 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $i$264;
        $204 = $labelInfo + 1310736 + ($194 + -5 << 2) | 0;
        HEAP32[$204 >> 2] = (HEAP32[$204 >> 2] | 0) + $j$075;
        $208 = $labelInfo + 1310736 + ($194 + -3 << 2) | 0;
        if ((HEAP32[$208 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$208 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $211 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $211;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $211 << 16 >> 16;
        $216 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($216 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($216 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($216 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($216 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $211;
        break;
       }
      }
      if ($71) {
       $74 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       $77 = HEAP32[$labelInfo + 1179664 + ($70 + -1 << 2) >> 2] | 0;
       if (($74 | 0) > ($77 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $77;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$056 >> 2] = $77;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $94 = $77;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $94 = $77;
       } else {
        HEAP16[$pnt2$367 >> 1] = $74;
        if (($74 | 0) < ($77 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($77 | 0)) HEAP32[$wk$153 >> 2] = $74;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $94 = $74;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $94 = $74;
       }
       $96 = ($94 << 16 >> 16) * 7 | 0;
       $98 = $labelInfo + 1310736 + ($96 + -7 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + 1;
       $102 = $labelInfo + 1310736 + ($96 + -6 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $i$264;
       $106 = $labelInfo + 1310736 + ($96 + -5 << 2) | 0;
       HEAP32[$106 >> 2] = (HEAP32[$106 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($96 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($112 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $65;
       $152 = $66 * 7 | 0;
       $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
       $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$264;
       $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
       HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$075;
       $166 = $labelInfo + 1310736 + ($152 + -4 << 2) | 0;
       if ((HEAP32[$166 >> 2] | 0) > ($i$264 | 0)) HEAP32[$166 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $117 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
      $120 = HEAP32[$labelInfo + 1179664 + (($112 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($117 | 0) > ($120 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $120;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$249 >> 2] = $120;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $137 = $120;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $137 = $120;
      } else {
       HEAP16[$pnt2$367 >> 1] = $117;
       if (($117 | 0) < ($120 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($120 | 0)) HEAP32[$wk$346 >> 2] = $117;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $137 = $117;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $137 = $117;
      }
      $139 = ($137 << 16 >> 16) * 7 | 0;
      $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
      $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$264;
      $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
      HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $231 = $pnt$168 + 2 | 0;
     $232 = $pnt2$367 + 2 | 0;
     $233 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $233;
      $pnt$1$lcssa = $231;
      $pnt2$3$lcssa = $232;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $233;
      $pnt$168 = $231;
      $pnt2$367 = $232;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $240 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $242 = HEAP32[$wk$443 >> 2] | 0;
    if (($242 | 0) == ($i$341 | 0)) {
     $248 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $248 = HEAP32[$labelInfo + 1179664 + ($242 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $248;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $252 = $labelInfo + 8 | 0;
  $253 = $j$1$lcssa + -1 | 0;
  HEAP32[$252 >> 2] = $253;
  if (!$253) $$0 = 0; else {
   _memset($240 | 0, 0, $253 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $253 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $260 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($260 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($260 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($260 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($260 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$252 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $274 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $275 = $i$537 * 7 | 0;
     $278 = $labelInfo + 12 + ($274 << 2) | 0;
     HEAP32[$278 >> 2] = (HEAP32[$278 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($275 << 2) >> 2] | 0);
     $285 = $274 << 1;
     $286 = $labelInfo + 655376 + ($285 << 3) | 0;
     HEAPF64[$286 >> 3] = +HEAPF64[$286 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 1 << 2) >> 2] | 0);
     $294 = $labelInfo + 655376 + (($285 | 1) << 3) | 0;
     HEAPF64[$294 >> 3] = +HEAPF64[$294 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($275 + 2 << 2) >> 2] | 0);
     $297 = $274 << 2;
     $298 = $labelInfo + 131084 + ($297 << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($275 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($297 | 1) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($275 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($297 | 2) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($275 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) > ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $319 = $labelInfo + 131084 + (($297 | 3) << 2) | 0;
     $323 = HEAP32[$labelInfo + 1310736 + ($275 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$319 >> 2] | 0) < ($323 | 0)) HEAP32[$319 >> 2] = $323;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$252 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $327 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $330 = $i$636 << 1;
     $331 = $labelInfo + 655376 + ($330 << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $337 = $labelInfo + 655376 + (($330 | 1) << 3) | 0;
     HEAPF64[$337 >> 3] = +HEAPF64[$337 >> 3] / +(HEAP32[$327 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$252 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $codePatt, $dirPatt, $cfPatt, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected, $codeGlobalID_p) {
 $pattHandle = $pattHandle | 0;
 $imageProcMode = $imageProcMode | 0;
 $pattDetectMode = $pattDetectMode | 0;
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $pixelFormat = $pixelFormat | 0;
 $paramLTf = $paramLTf | 0;
 $vertex = $vertex | 0;
 $pattRatio = +$pattRatio;
 $codePatt = $codePatt | 0;
 $dirPatt = $dirPatt | 0;
 $cfPatt = $cfPatt | 0;
 $codeMatrix = $codeMatrix | 0;
 $dirMatrix = $dirMatrix | 0;
 $cfMatrix = $cfMatrix | 0;
 $matrixCodeType = $matrixCodeType | 0;
 $errorCorrected = $errorCorrected | 0;
 $codeGlobalID_p = $codeGlobalID_p | 0;
 var $$0 = 0, $$0$i = 0, $$max$0$i = 0, $$max$0$i$1 = 0, $$max$0$i$2 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $107 = 0, $114 = 0, $118 = 0, $122 = 0, $126 = 0, $137 = 0, $14 = 0, $141 = 0, $147 = 0, $148 = 0, $149 = 0, $162 = 0, $166 = 0, $175 = 0, $178 = 0, $186 = 0, $188 = 0, $196 = 0, $20 = 0, $200 = 0, $204 = 0, $206 = 0, $211 = 0, $212 = 0, $213 = 0, $26 = 0, $29 = 0, $30 = 0, $34 = 0, $68 = 0, $8 = 0, $80 = 0, $81 = 0, $84 = 0, $93 = 0, $97 = 0, $bit$0$i28 = 0, $bit$1$i25 = 0, $bit$10$i43 = 0, $bit$11$i = 0, $bit$11$i$lcssa = 0, $bit$2$i = 0, $bit$2$i$lcssa = 0, $bit$3$i34 = 0, $bit$4$i31 = 0, $bit$5$i = 0, $bit$5$i$lcssa = 0, $bit$6$i40 = 0, $bit$7$i37 = 0, $bit$8$i = 0, $bit$8$i$lcssa = 0, $bit$9$i46 = 0, $code$i = 0, $contrastMin$0$i26 = 0, $contrastMin$1$i23 = 0, $contrastMin$10$i41 = 0, $contrastMin$11$i = 0, $contrastMin$11$i$lcssa = 0, $contrastMin$12$i = 0, $contrastMin$2$i = 0, $contrastMin$2$i$lcssa = 0, $contrastMin$3$i32 = 0, $contrastMin$4$i29 = 0, $contrastMin$5$i = 0, $contrastMin$5$i$lcssa = 0, $contrastMin$6$i38 = 0, $contrastMin$7$i35 = 0, $contrastMin$8$i = 0, $contrastMin$8$i$lcssa = 0, $contrastMin$9$i44 = 0, $corner$i = 0, $dirCode$i = 0, $errorCodeMtx$0 = 0, $errorCodePatt$0 = 0, $ext_patt = 0, $i$2$i$lcssa = 0, $i$2$i47 = 0, $i$3$i24 = 0, $i$4$i33 = 0, $i$4$off$i = 0, $i$5$i36 = 0, $i$6$i45 = 0, $i$6$off$i = 0, $j$0$i27 = 0, $j$0$off$i = 0, $j$1$i30 = 0, $j$2$i39 = 0, $j$2$off$i = 0, $j$3$i42 = 0, $min$1$i = 0, $min$1$i$1 = 0, $min$1$i$2 = 0, $or$cond4454$i = 0, $recd127$i = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 12448 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $dirCode$i = sp + 12440 | 0;
 $corner$i = sp + 8 | 0;
 $code$i = sp;
 $recd127$i = sp + 12312 | 0;
 $ext_patt = sp + 24 | 0;
 do if (($pattDetectMode + -2 | 0) >>> 0 < 3) {
  if (($matrixCodeType | 0) != 2830) {
   $200 = $matrixCodeType & 255;
   if ((_arPattGetImage2($imageProcMode, 2, $200, $200 * 3 | 0, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {
    HEAP32[$codeMatrix >> 2] = -1;
    $errorCodeMtx$0 = -6;
    break;
   }
   $204 = _get_matrix_code($ext_patt, $200, $codeMatrix, $dirMatrix, $cfMatrix, $matrixCodeType, $errorCorrected) | 0;
   if (!$codeGlobalID_p) {
    $errorCodeMtx$0 = $204;
    break;
   }
   $206 = $codeGlobalID_p;
   HEAP32[$206 >> 2] = 0;
   HEAP32[$206 + 4 >> 2] = 0;
   $errorCodeMtx$0 = $204;
   break;
  }
  if ((_arPattGetImage2($imageProcMode, 2, 14, 42, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, .875, $ext_patt) | 0) < 0) {
   HEAP32[$codeMatrix >> 2] = -1;
   $errorCodeMtx$0 = -6;
   break;
  }
  HEAP32[$corner$i >> 2] = 0;
  HEAP32[$corner$i + 4 >> 2] = 182;
  HEAP32[$corner$i + 8 >> 2] = 195;
  HEAP32[$corner$i + 12 >> 2] = 13;
  $8 = HEAP8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0;
  $$max$0$i = ($8 & 255) > 0 ? $8 : 0;
  $min$1$i = ($8 & 255) < 255 ? $8 : -1;
  $14 = HEAP8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0;
  $$max$0$i$1 = ($14 & 255) > ($$max$0$i & 255) ? $14 : $$max$0$i;
  $min$1$i$1 = ($14 & 255) < ($min$1$i & 255) ? $14 : $min$1$i;
  $20 = HEAP8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0;
  $$max$0$i$2 = ($20 & 255) > ($$max$0$i$1 & 255) ? $20 : $$max$0$i$1;
  $min$1$i$2 = ($20 & 255) < ($min$1$i$1 & 255) ? $20 : $min$1$i$1;
  $26 = HEAP8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0;
  $29 = (($26 & 255) > ($$max$0$i$2 & 255) ? $26 : $$max$0$i$2) & 255;
  $30 = (($26 & 255) < ($min$1$i$2 & 255) ? $26 : $min$1$i$2) & 255;
  L13 : do if (($29 - $30 | 0) < 30) {
   HEAP32[$dirMatrix >> 2] = 0;
   HEAPF64[$cfMatrix >> 3] = -1.0;
   $$0$i = -2;
   $186 = 0;
   $188 = 0;
  } else {
   $34 = ($29 + $30 | 0) >>> 1;
   HEAP8[$dirCode$i >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;
   HEAP8[$dirCode$i + 1 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;
   HEAP8[$dirCode$i + 2 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;
   HEAP8[$dirCode$i + 3 >> 0] = (HEAPU8[$ext_patt + (HEAP32[$corner$i + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $34 >>> 0 & 1;
   $i$2$i47 = 0;
   while (1) {
    $68 = $i$2$i47 + 1 | 0;
    if ((HEAP8[$dirCode$i + $i$2$i47 >> 0] | 0) == 1) if ((HEAP8[$dirCode$i + (($68 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode$i + (($i$2$i47 + 2 | 0) % 4 | 0) >> 0] | 0)) {
     $i$2$i$lcssa = $i$2$i47;
     break;
    }
    if (($68 | 0) < 4) $i$2$i47 = $68; else {
     $i$2$i$lcssa = $68;
     break;
    }
   }
   switch ($i$2$i$lcssa | 0) {
   case 4:
    {
     HEAP32[$dirMatrix >> 2] = 0;
     HEAPF64[$cfMatrix >> 3] = -1.0;
     $$0$i = -3;
     $186 = 0;
     $188 = 0;
     break L13;
     break;
    }
   case 0:
    {
     $bit$0$i28 = 119;
     $contrastMin$0$i26 = 255;
     $j$0$i27 = 0;
     while (1) {
      $j$0$off$i = $j$0$i27 + -3 | 0;
      $80 = ($j$0$i27 & -2 | 0) == 12;
      $81 = $j$0$i27 * 14 | 0;
      $bit$1$i25 = $bit$0$i28;
      $contrastMin$1$i23 = $contrastMin$0$i26;
      $i$3$i24 = 0;
      while (1) {
       if (($i$3$i24 + -3 | $j$0$off$i) >>> 0 < 8) {
        $bit$2$i = $bit$1$i25;
        $contrastMin$2$i = $contrastMin$1$i23;
       } else {
        $84 = $i$3$i24 & -2;
        if (($i$3$i24 | $j$0$i27) >>> 0 < 2) {
         $bit$2$i = $bit$1$i25;
         $contrastMin$2$i = $contrastMin$1$i23;
        } else if ($80 & (($84 | 0) == 0 | ($84 | 0) == 12)) {
         $bit$2$i = $bit$1$i25;
         $contrastMin$2$i = $contrastMin$1$i23;
        } else {
         $93 = (HEAPU8[$ext_patt + ($i$3$i24 + $81) >> 0] | 0) - $34 | 0;
         HEAP8[$recd127$i + $bit$1$i25 >> 0] = $93 >>> 31;
         $97 = ($93 | 0) > -1 ? $93 : 0 - $93 | 0;
         $bit$2$i = $bit$1$i25 + -1 | 0;
         $contrastMin$2$i = ($97 | 0) < ($contrastMin$1$i23 | 0) ? $97 : $contrastMin$1$i23;
        }
       }
       $i$3$i24 = $i$3$i24 + 1 | 0;
       if (($i$3$i24 | 0) == 14) {
        $bit$2$i$lcssa = $bit$2$i;
        $contrastMin$2$i$lcssa = $contrastMin$2$i;
        break;
       } else {
        $bit$1$i25 = $bit$2$i;
        $contrastMin$1$i23 = $contrastMin$2$i;
       }
      }
      $100 = $j$0$i27 + 1 | 0;
      if (($100 | 0) == 14) {
       $contrastMin$12$i = $contrastMin$2$i$lcssa;
       break;
      } else {
       $bit$0$i28 = $bit$2$i$lcssa;
       $contrastMin$0$i26 = $contrastMin$2$i$lcssa;
       $j$0$i27 = $100;
      }
     }
     break;
    }
   case 1:
    {
     $bit$3$i34 = 119;
     $contrastMin$3$i32 = 255;
     $i$4$i33 = 0;
     while (1) {
      $i$4$off$i = $i$4$i33 + -3 | 0;
      $101 = $i$4$i33 & -2;
      $102 = ($101 | 0) == 0;
      $103 = ($101 | 0) == 12;
      $bit$4$i31 = $bit$3$i34;
      $contrastMin$4$i29 = $contrastMin$3$i32;
      $j$1$i30 = 13;
      while (1) {
       if (($j$1$i30 + -3 | $i$4$off$i) >>> 0 < 8) {
        $bit$5$i = $bit$4$i31;
        $contrastMin$5$i = $contrastMin$4$i29;
       } else {
        $107 = ($j$1$i30 & -2 | 0) == 12;
        if ($102 & $107) {
         $bit$5$i = $bit$4$i31;
         $contrastMin$5$i = $contrastMin$4$i29;
        } else if ($103 & ($j$1$i30 >>> 0 < 2 | $107)) {
         $bit$5$i = $bit$4$i31;
         $contrastMin$5$i = $contrastMin$4$i29;
        } else {
         $114 = (HEAPU8[$ext_patt + (($j$1$i30 * 14 | 0) + $i$4$i33) >> 0] | 0) - $34 | 0;
         HEAP8[$recd127$i + $bit$4$i31 >> 0] = $114 >>> 31;
         $118 = ($114 | 0) > -1 ? $114 : 0 - $114 | 0;
         $bit$5$i = $bit$4$i31 + -1 | 0;
         $contrastMin$5$i = ($118 | 0) < ($contrastMin$4$i29 | 0) ? $118 : $contrastMin$4$i29;
        }
       }
       if (($j$1$i30 | 0) > 0) {
        $bit$4$i31 = $bit$5$i;
        $contrastMin$4$i29 = $contrastMin$5$i;
        $j$1$i30 = $j$1$i30 + -1 | 0;
       } else {
        $bit$5$i$lcssa = $bit$5$i;
        $contrastMin$5$i$lcssa = $contrastMin$5$i;
        break;
       }
      }
      $122 = $i$4$i33 + 1 | 0;
      if (($122 | 0) == 14) {
       $contrastMin$12$i = $contrastMin$5$i$lcssa;
       break;
      } else {
       $bit$3$i34 = $bit$5$i$lcssa;
       $contrastMin$3$i32 = $contrastMin$5$i$lcssa;
       $i$4$i33 = $122;
      }
     }
     break;
    }
   case 2:
    {
     $bit$6$i40 = 119;
     $contrastMin$6$i38 = 255;
     $j$2$i39 = 13;
     while (1) {
      $j$2$off$i = $j$2$i39 + -3 | 0;
      $or$cond4454$i = $j$2$i39 >>> 0 < 2 | ($j$2$i39 & -2 | 0) == 12;
      $126 = $j$2$i39 * 14 | 0;
      $bit$7$i37 = $bit$6$i40;
      $contrastMin$7$i35 = $contrastMin$6$i38;
      $i$5$i36 = 13;
      while (1) {
       if (($i$5$i36 + -3 | $j$2$off$i) >>> 0 < 8) {
        $bit$8$i = $bit$7$i37;
        $contrastMin$8$i = $contrastMin$7$i35;
       } else if (($i$5$i36 | $j$2$i39) >>> 0 < 2 | $or$cond4454$i & ($i$5$i36 & -2 | 0) == 12) {
        $bit$8$i = $bit$7$i37;
        $contrastMin$8$i = $contrastMin$7$i35;
       } else {
        $137 = (HEAPU8[$ext_patt + ($i$5$i36 + $126) >> 0] | 0) - $34 | 0;
        HEAP8[$recd127$i + $bit$7$i37 >> 0] = $137 >>> 31;
        $141 = ($137 | 0) > -1 ? $137 : 0 - $137 | 0;
        $bit$8$i = $bit$7$i37 + -1 | 0;
        $contrastMin$8$i = ($141 | 0) < ($contrastMin$7$i35 | 0) ? $141 : $contrastMin$7$i35;
       }
       if (($i$5$i36 | 0) > 0) {
        $bit$7$i37 = $bit$8$i;
        $contrastMin$7$i35 = $contrastMin$8$i;
        $i$5$i36 = $i$5$i36 + -1 | 0;
       } else {
        $bit$8$i$lcssa = $bit$8$i;
        $contrastMin$8$i$lcssa = $contrastMin$8$i;
        break;
       }
      }
      if (($j$2$i39 | 0) > 0) {
       $bit$6$i40 = $bit$8$i$lcssa;
       $contrastMin$6$i38 = $contrastMin$8$i$lcssa;
       $j$2$i39 = $j$2$i39 + -1 | 0;
      } else {
       $contrastMin$12$i = $contrastMin$8$i$lcssa;
       break;
      }
     }
     break;
    }
   case 3:
    {
     $bit$9$i46 = 119;
     $contrastMin$9$i44 = 255;
     $i$6$i45 = 13;
     while (1) {
      $i$6$off$i = $i$6$i45 + -3 | 0;
      $147 = $i$6$i45 & -2;
      $148 = ($147 | 0) == 12;
      $149 = ($147 | 0) == 0;
      $bit$10$i43 = $bit$9$i46;
      $contrastMin$10$i41 = $contrastMin$9$i44;
      $j$3$i42 = 0;
      while (1) {
       if (($j$3$i42 + -3 | $i$6$off$i) >>> 0 < 8) {
        $bit$11$i = $bit$10$i43;
        $contrastMin$11$i = $contrastMin$10$i41;
       } else if ($148 & $j$3$i42 >>> 0 < 2 | ($j$3$i42 | $i$6$i45) >>> 0 < 2) {
        $bit$11$i = $bit$10$i43;
        $contrastMin$11$i = $contrastMin$10$i41;
       } else if ($149 & ($j$3$i42 & -2 | 0) == 12) {
        $bit$11$i = $bit$10$i43;
        $contrastMin$11$i = $contrastMin$10$i41;
       } else {
        $162 = (HEAPU8[$ext_patt + (($j$3$i42 * 14 | 0) + $i$6$i45) >> 0] | 0) - $34 | 0;
        HEAP8[$recd127$i + $bit$10$i43 >> 0] = $162 >>> 31;
        $166 = ($162 | 0) > -1 ? $162 : 0 - $162 | 0;
        $bit$11$i = $bit$10$i43 + -1 | 0;
        $contrastMin$11$i = ($166 | 0) < ($contrastMin$10$i41 | 0) ? $166 : $contrastMin$10$i41;
       }
       $j$3$i42 = $j$3$i42 + 1 | 0;
       if (($j$3$i42 | 0) == 14) {
        $bit$11$i$lcssa = $bit$11$i;
        $contrastMin$11$i$lcssa = $contrastMin$11$i;
        break;
       } else {
        $bit$10$i43 = $bit$11$i;
        $contrastMin$10$i41 = $contrastMin$11$i;
       }
      }
      if (($i$6$i45 | 0) > 0) {
       $bit$9$i46 = $bit$11$i$lcssa;
       $contrastMin$9$i44 = $contrastMin$11$i$lcssa;
       $i$6$i45 = $i$6$i45 + -1 | 0;
      } else {
       $contrastMin$12$i = $contrastMin$11$i$lcssa;
       break;
      }
     }
     break;
    }
   default:
    $contrastMin$12$i = 255;
   }
   HEAP32[$dirMatrix >> 2] = $i$2$i$lcssa;
   HEAPF64[$cfMatrix >> 3] = ($contrastMin$12$i | 0) > 30 ? 1.0 : +($contrastMin$12$i | 0) / 30.0;
   $175 = _decode_bch(2830, 0, 0, $recd127$i, $code$i) | 0;
   if (($175 | 0) < 0) {
    $$0$i = -4;
    $186 = 0;
    $188 = 0;
   } else {
    if ($errorCorrected) HEAP32[$errorCorrected >> 2] = $175;
    $178 = $code$i;
    $$0$i = 0;
    $186 = HEAP32[$178 >> 2] | 0;
    $188 = HEAP32[$178 + 4 >> 2] | 0;
   }
  } while (0);
  if (($$0$i | 0) < 0) {
   HEAP32[$codeMatrix >> 2] = -1;
   $errorCodeMtx$0 = $$0$i;
   break;
  }
  if (($186 | 0) == -1 & ($188 | 0) == -1) {
   HEAP32[$codeMatrix >> 2] = -1;
   $errorCodeMtx$0 = -5;
   break;
  }
  HEAP32[$codeMatrix >> 2] = ($186 & -32768 | 0) == 0 & 0 == 0 ? $186 & 32767 : 0;
  if (!$codeGlobalID_p) $errorCodeMtx$0 = 0; else {
   $196 = $codeGlobalID_p;
   HEAP32[$196 >> 2] = $186;
   HEAP32[$196 + 4 >> 2] = $188;
   $errorCodeMtx$0 = 0;
  }
 } else $errorCodeMtx$0 = 1; while (0);
 L78 : do switch ($pattDetectMode | 0) {
 case 0:
 case 1:
 case 3:
 case 4:
  {
   if (!$pattHandle) {
    HEAP32[$codePatt >> 2] = -1;
    $errorCodePatt$0 = -1;
    break L78;
   }
   $211 = $pattHandle + 28 | 0;
   $212 = HEAP32[$211 >> 2] | 0;
   $213 = $212 << 2;
   switch ($pattDetectMode | 0) {
   case 0:
   case 3:
    {
     if ((_arPattGetImage2($imageProcMode, 0, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {
      HEAP32[$codePatt >> 2] = -1;
      $errorCodePatt$0 = -6;
      break L78;
     } else {
      $errorCodePatt$0 = _pattern_match($pattHandle, 0, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0;
      break L78;
     }
     break;
    }
   default:
    if ((_arPattGetImage2($imageProcMode, 1, $212, $213, $image, $xsize, $ysize, $pixelFormat, $paramLTf, $vertex, $pattRatio, $ext_patt) | 0) < 0) {
     HEAP32[$codePatt >> 2] = -1;
     $errorCodePatt$0 = -6;
     break L78;
    } else {
     $errorCodePatt$0 = _pattern_match($pattHandle, 1, $ext_patt, HEAP32[$211 >> 2] | 0, $codePatt, $dirPatt, $cfPatt) | 0;
     break L78;
    }
   }
   break;
  }
 default:
  $errorCodePatt$0 = 1;
 } while (0);
 if (($errorCodeMtx$0 | 0) == 1) $$0 = $errorCodePatt$0; else if (($errorCodePatt$0 | 0) == 1) $$0 = $errorCodeMtx$0; else $$0 = ($errorCodePatt$0 & $errorCodeMtx$0 | 0) < 0 ? $errorCodePatt$0 : 0;
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($42 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $42;
       $45 = ($42 << 16 >> 16) * 7 | 0;
       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;
       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264;
       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $67 = $65 << 16 >> 16 > 0;
      if ($61 << 16 >> 16 <= 0) {
       if ($67) {
        HEAP16[$pnt2$367 >> 1] = $65;
        $167 = $66 * 7 | 0;
        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;
        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264;
        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075;
        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;
        if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($187 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $187;
        $190 = ($187 << 16 >> 16) * 7 | 0;
        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;
        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264;
        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075;
        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;
        if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$204 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $207 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $207;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16;
        $212 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $207;
        break;
       }
      }
      if ($67) {
       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       if (($70 | 0) > ($73 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $73;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $90 = $73;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $90 = $73;
       } else {
        HEAP16[$pnt2$367 >> 1] = $70;
        if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $90 = $70;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $90 = $70;
       }
       $92 = ($90 << 16 >> 16) * 7 | 0;
       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;
       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264;
       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($108 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $61;
       $148 = $62 * 7 | 0;
       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;
       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264;
       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075;
       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;
       if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($113 | 0) > ($116 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $116;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $133 = $116;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $133 = $116;
      } else {
       HEAP16[$pnt2$367 >> 1] = $113;
       if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $133 = $113;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $133 = $113;
      }
      $135 = ($133 << 16 >> 16) * 7 | 0;
      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264;
      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $227 = $pnt$168 + 2 | 0;
     $228 = $pnt2$367 + 2 | 0;
     $229 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $229;
      $pnt$1$lcssa = $227;
      $pnt2$3$lcssa = $228;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $229;
      $pnt$168 = $227;
      $pnt2$367 = $228;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $236 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $238 = HEAP32[$wk$443 >> 2] | 0;
    if (($238 | 0) == ($i$341 | 0)) {
     $244 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $244;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $248 = $labelInfo + 8 | 0;
  $249 = $j$1$lcssa + -1 | 0;
  HEAP32[$248 >> 2] = $249;
  if (!$249) $$0 = 0; else {
   _memset($236 | 0, 0, $249 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $256 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $271 = $i$537 * 7 | 0;
     $274 = $labelInfo + 12 + ($270 << 2) | 0;
     HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0);
     $281 = $270 << 1;
     $282 = $labelInfo + 655376 + ($281 << 3) | 0;
     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0);
     $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0);
     $293 = $270 << 2;
     $294 = $labelInfo + 131084 + ($293 << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0;
     $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$248 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $323 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $326 = $i$636 << 1;
     $327 = $labelInfo + 655376 + ($326 << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0);
     $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0;
     HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $102 = 0, $108 = 0, $113 = 0, $116 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $229 = 0, $236 = 0, $238 = 0, $244 = 0, $248 = 0, $249 = 0, $256 = 0, $27 = 0, $270 = 0, $271 = 0, $274 = 0, $281 = 0, $282 = 0, $29 = 0, $290 = 0, $293 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $315 = 0, $319 = 0, $323 = 0, $326 = 0, $327 = 0, $333 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $9 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 1) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     $29 = HEAPU8[$pnt$168 >> 0] | 0;
     do if ((($29 & 240) + 24 + ($29 << 4 & 240) + ((HEAPU8[$pnt$168 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $42 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($42 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $42;
       $45 = ($42 << 16 >> 16) * 7 | 0;
       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;
       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$264;
       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $61 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $65 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $67 = $65 << 16 >> 16 > 0;
      if ($61 << 16 >> 16 <= 0) {
       if ($67) {
        HEAP16[$pnt2$367 >> 1] = $65;
        $167 = $66 * 7 | 0;
        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;
        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$264;
        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$075;
        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;
        if ((HEAP32[$181 >> 2] | 0) < ($i$264 | 0)) HEAP32[$181 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $187 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($187 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $187;
        $190 = ($187 << 16 >> 16) * 7 | 0;
        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;
        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$264;
        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$075;
        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;
        if ((HEAP32[$204 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$204 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $207 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $207;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $207 << 16 >> 16;
        $212 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $207;
        break;
       }
      }
      if ($67) {
       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       if (($70 | 0) > ($73 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $73;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$056 >> 2] = $73;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $90 = $73;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $90 = $73;
       } else {
        HEAP16[$pnt2$367 >> 1] = $70;
        if (($70 | 0) < ($73 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$153 >> 2] = $70;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $90 = $70;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $90 = $70;
       }
       $92 = ($90 << 16 >> 16) * 7 | 0;
       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;
       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$264;
       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $108 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($108 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $61;
       $148 = $62 * 7 | 0;
       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;
       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$264;
       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$075;
       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;
       if ((HEAP32[$162 >> 2] | 0) > ($i$264 | 0)) HEAP32[$162 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($113 | 0) > ($116 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $116;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$249 >> 2] = $116;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $133 = $116;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $133 = $116;
      } else {
       HEAP16[$pnt2$367 >> 1] = $113;
       if (($113 | 0) < ($116 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$346 >> 2] = $113;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $133 = $113;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $133 = $113;
      }
      $135 = ($133 << 16 >> 16) * 7 | 0;
      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$264;
      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $227 = $pnt$168 + 2 | 0;
     $228 = $pnt2$367 + 2 | 0;
     $229 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $229;
      $pnt$1$lcssa = $227;
      $pnt2$3$lcssa = $228;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $229;
      $pnt$168 = $227;
      $pnt2$367 = $228;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $236 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $238 = HEAP32[$wk$443 >> 2] | 0;
    if (($238 | 0) == ($i$341 | 0)) {
     $244 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $244 = HEAP32[$labelInfo + 1179664 + ($238 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $244;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $248 = $labelInfo + 8 | 0;
  $249 = $j$1$lcssa + -1 | 0;
  HEAP32[$248 >> 2] = $249;
  if (!$249) $$0 = 0; else {
   _memset($236 | 0, 0, $249 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $249 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $256 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($256 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($256 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($256 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($256 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$248 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $270 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $271 = $i$537 * 7 | 0;
     $274 = $labelInfo + 12 + ($270 << 2) | 0;
     HEAP32[$274 >> 2] = (HEAP32[$274 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($271 << 2) >> 2] | 0);
     $281 = $270 << 1;
     $282 = $labelInfo + 655376 + ($281 << 3) | 0;
     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 1 << 2) >> 2] | 0);
     $290 = $labelInfo + 655376 + (($281 | 1) << 3) | 0;
     HEAPF64[$290 >> 3] = +HEAPF64[$290 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($271 + 2 << 2) >> 2] | 0);
     $293 = $270 << 2;
     $294 = $labelInfo + 131084 + ($293 << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($271 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($293 | 1) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($271 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($293 | 2) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($271 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) > ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $315 = $labelInfo + 131084 + (($293 | 3) << 2) | 0;
     $319 = HEAP32[$labelInfo + 1310736 + ($271 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$315 >> 2] | 0) < ($319 | 0)) HEAP32[$315 >> 2] = $319;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$248 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $323 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $326 = $i$636 << 1;
     $327 = $labelInfo + 655376 + ($326 << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$323 >> 2] | 0);
     $333 = $labelInfo + 655376 + (($326 | 1) << 3) | 0;
     HEAPF64[$333 >> 3] = +HEAPF64[$333 >> 3] / +(HEAP32[$323 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$248 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabeling($image, $xsize, $ysize, $pixFormat, $debugMode, $labelingMode, $labelingThresh, $imageProcMode, $labelInfo, $image_thresh) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $pixFormat = $pixFormat | 0;
 $debugMode = $debugMode | 0;
 $labelingMode = $labelingMode | 0;
 $labelingThresh = $labelingThresh | 0;
 $imageProcMode = $imageProcMode | 0;
 $labelInfo = $labelInfo | 0;
 $image_thresh = $image_thresh | 0;
 var $$0 = 0;
 L1 : do switch ($debugMode | 0) {
 case 0:
  {
   switch ($labelingMode | 0) {
   case 1:
    {
     if ($image_thresh) {
      $$0 = _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;
      break L1;
     }
     switch ($imageProcMode | 0) {
     case 0:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     case 1:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     default:
      _exit(0);
     }
     break;
    }
   case 0:
    {
     if ($image_thresh) {
      $$0 = _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;
      break L1;
     }
     switch ($imageProcMode | 0) {
     case 0:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     case 1:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     default:
      _exit(0);
     }
     break;
    }
   default:
    _exit(0);
   }
   break;
  }
 case 1:
  {
   switch ($labelingMode | 0) {
   case 1:
    {
     if ($image_thresh) {
      $$0 = _arLabelingSubEBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;
      break L1;
     }
     switch ($imageProcMode | 0) {
     case 0:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubEBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubEBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubEBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     case 1:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubEBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubEBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubEBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubEBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubEBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubEBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     default:
      _exit(0);
     }
     break;
    }
   case 0:
    {
     if ($image_thresh) {
      $$0 = _arLabelingSubEWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) | 0;
      break L1;
     }
     switch ($imageProcMode | 0) {
     case 0:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubEWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubEWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubEWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     case 1:
      {
       if ($pixFormat >>> 0 < 2) {
        $$0 = _arLabelingSubEWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -2 | 0) == 2) {
        $$0 = _arLabelingSubEWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       if (($pixFormat & -3 | 0) == 4) {
        $$0 = _arLabelingSubEWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
        break L1;
       }
       switch ($pixFormat | 0) {
       case 5:
       case 12:
       case 13:
       case 14:
        {
         $$0 = _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 8:
        {
         $$0 = _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 7:
        {
         $$0 = _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 9:
        {
         $$0 = _arLabelingSubEWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 10:
        {
         $$0 = _arLabelingSubEWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       case 11:
        {
         $$0 = _arLabelingSubEWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) | 0;
         break L1;
         break;
        }
       default:
        _exit(0);
       }
       break;
      }
     default:
      _exit(0);
     }
     break;
    }
   default:
    _exit(0);
   }
   break;
  }
 default:
  _exit(0);
 } while (0);
 return $$0 | 0;
}

function _arLabelingSubEWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 2) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$367 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$203 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $206 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $72;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $89 = $72;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$367 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $89 = $69;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $115;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $132 = $115;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$367 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $132 = $112;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $226 = $pnt$168 + 4 | 0;
     $227 = $pnt2$367 + 2 | 0;
     $228 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $228;
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $228;
      $pnt$168 = $226;
      $pnt2$367 = $227;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 8 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $237 = HEAP32[$wk$443 >> 2] | 0;
    if (($237 | 0) == ($i$341 | 0)) {
     $243 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $243;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $255 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$537 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $325 = $i$636 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $107 = 0, $112 = 0, $115 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $228 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $27 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $9 = 0, $91 = 0, $93 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 2) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 2 >> 0] | 0) + (HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 + 3 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $41 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$264;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $60 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$367 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$264;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$075;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$264 | 0)) HEAP32[$180 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $186 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$264;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$075;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$203 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $206 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $72;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$056 >> 2] = $72;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $89 = $72;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$367 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$153 >> 2] = $69;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $89 = $69;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$264;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $107 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$264;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$075;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$264 | 0)) HEAP32[$161 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $115;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$249 >> 2] = $115;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $132 = $115;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$367 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$346 >> 2] = $112;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $132 = $112;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$264;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $226 = $pnt$168 + 4 | 0;
     $227 = $pnt2$367 + 2 | 0;
     $228 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $228;
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $228;
      $pnt$168 = $226;
      $pnt2$367 = $227;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 8 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $237 = HEAP32[$wk$443 >> 2] | 0;
    if (($237 | 0) == ($i$341 | 0)) {
     $243 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $243;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $255 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$537 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $325 = $i$636 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 * 3 | 0) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($40 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $40;
       $43 = ($40 << 16 >> 16) * 7 | 0;
       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;
       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;
       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $65 = $63 << 16 >> 16 > 0;
      if ($59 << 16 >> 16 <= 0) {
       if ($65) {
        HEAP16[$pnt2$367 >> 1] = $63;
        $165 = $64 * 7 | 0;
        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;
        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;
        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;
        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;
        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($185 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $185;
        $188 = ($185 << 16 >> 16) * 7 | 0;
        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;
        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;
        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;
        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;
        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$202 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $205 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $205;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;
        $210 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $205;
        break;
       }
      }
      if ($65) {
       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       if (($68 | 0) > ($71 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $71;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $88 = $71;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $88 = $71;
       } else {
        HEAP16[$pnt2$367 >> 1] = $68;
        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $88 = $68;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $88 = $68;
       }
       $90 = ($88 << 16 >> 16) * 7 | 0;
       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;
       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;
       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($106 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $59;
       $146 = $60 * 7 | 0;
       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;
       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;
       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;
       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;
       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($111 | 0) > ($114 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $114;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $131 = $114;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $131 = $114;
      } else {
       HEAP16[$pnt2$367 >> 1] = $111;
       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $131 = $111;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $131 = $111;
      }
      $133 = ($131 << 16 >> 16) * 7 | 0;
      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;
      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $225 = $pnt$168 + 3 | 0;
     $226 = $pnt2$367 + 2 | 0;
     $227 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $227;
      $pnt$1$lcssa = $225;
      $pnt2$3$lcssa = $226;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $227;
      $pnt$168 = $225;
      $pnt2$367 = $226;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 6 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $236 = HEAP32[$wk$443 >> 2] | 0;
    if (($236 | 0) == ($i$341 | 0)) {
     $242 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $242;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $254 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$537 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $324 = $i$636 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 * 3 | 0) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($40 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $40;
       $43 = ($40 << 16 >> 16) * 7 | 0;
       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;
       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;
       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $65 = $63 << 16 >> 16 > 0;
      if ($59 << 16 >> 16 <= 0) {
       if ($65) {
        HEAP16[$pnt2$367 >> 1] = $63;
        $165 = $64 * 7 | 0;
        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;
        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;
        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;
        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;
        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($185 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $185;
        $188 = ($185 << 16 >> 16) * 7 | 0;
        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;
        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;
        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;
        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;
        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$202 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $205 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $205;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;
        $210 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $205;
        break;
       }
      }
      if ($65) {
       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       if (($68 | 0) > ($71 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $71;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $88 = $71;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $88 = $71;
       } else {
        HEAP16[$pnt2$367 >> 1] = $68;
        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $88 = $68;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $88 = $68;
       }
       $90 = ($88 << 16 >> 16) * 7 | 0;
       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;
       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;
       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($106 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $59;
       $146 = $60 * 7 | 0;
       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;
       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;
       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;
       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;
       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($111 | 0) > ($114 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $114;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $131 = $114;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $131 = $114;
      } else {
       HEAP16[$pnt2$367 >> 1] = $111;
       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $131 = $111;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $131 = $111;
      }
      $133 = ($131 << 16 >> 16) * 7 | 0;
      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;
      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $225 = $pnt$168 + 3 | 0;
     $226 = $pnt2$367 + 2 | 0;
     $227 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $227;
      $pnt$1$lcssa = $225;
      $pnt2$3$lcssa = $226;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $227;
      $pnt$168 = $225;
      $pnt2$367 = $226;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 6 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $236 = HEAP32[$wk$443 >> 2] | 0;
    if (($236 | 0) == ($i$341 | 0)) {
     $242 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $242;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $254 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$537 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $324 = $i$636 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 2) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($40 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $40;
       $43 = ($40 << 16 >> 16) * 7 | 0;
       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;
       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;
       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $65 = $63 << 16 >> 16 > 0;
      if ($59 << 16 >> 16 <= 0) {
       if ($65) {
        HEAP16[$pnt2$367 >> 1] = $63;
        $165 = $64 * 7 | 0;
        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;
        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;
        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;
        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;
        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($185 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $185;
        $188 = ($185 << 16 >> 16) * 7 | 0;
        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;
        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;
        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;
        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;
        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$202 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $205 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $205;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;
        $210 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $205;
        break;
       }
      }
      if ($65) {
       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       if (($68 | 0) > ($71 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $71;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $88 = $71;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $88 = $71;
       } else {
        HEAP16[$pnt2$367 >> 1] = $68;
        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $88 = $68;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $88 = $68;
       }
       $90 = ($88 << 16 >> 16) * 7 | 0;
       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;
       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;
       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($106 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $59;
       $146 = $60 * 7 | 0;
       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;
       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;
       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;
       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;
       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($111 | 0) > ($114 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $114;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $131 = $114;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $131 = $114;
      } else {
       HEAP16[$pnt2$367 >> 1] = $111;
       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $131 = $111;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $131 = $111;
      }
      $133 = ($131 << 16 >> 16) * 7 | 0;
      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;
      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $225 = $pnt$168 + 4 | 0;
     $226 = $pnt2$367 + 2 | 0;
     $227 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $227;
      $pnt$1$lcssa = $225;
      $pnt2$3$lcssa = $226;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $227;
      $pnt$168 = $225;
      $pnt2$367 = $226;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 8 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $236 = HEAP32[$wk$443 >> 2] | 0;
    if (($236 | 0) == ($i$341 | 0)) {
     $242 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $242;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $254 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$537 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $324 = $i$636 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $106 = 0, $111 = 0, $114 = 0, $131 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $146 = 0, $148 = 0, $152 = 0, $156 = 0, $160 = 0, $165 = 0, $167 = 0, $17 = 0, $171 = 0, $175 = 0, $179 = 0, $18 = 0, $185 = 0, $188 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $202 = 0, $205 = 0, $210 = 0, $225 = 0, $226 = 0, $227 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $27 = 0, $272 = 0, $279 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $40 = 0, $43 = 0, $45 = 0, $49 = 0, $53 = 0, $59 = 0, $60 = 0, $63 = 0, $64 = 0, $65 = 0, $68 = 0, $71 = 0, $88 = 0, $9 = 0, $90 = 0, $92 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $27 = ($10 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $18 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($18 << 2) | 0;
  $pnt2$278 = $0 + ($18 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($27) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if (((HEAPU8[$pnt$168 + 1 >> 0] | 0) + (HEAPU8[$pnt$168 >> 0] | 0) + (HEAPU8[$pnt$168 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $40 = HEAP16[$pnt2$367 + ($19 << 1) >> 1] | 0;
      if ($40 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $40;
       $43 = ($40 << 16 >> 16) * 7 | 0;
       $45 = $labelInfo + 1310736 + ($43 + -7 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 1;
       $49 = $labelInfo + 1310736 + ($43 + -6 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $i$264;
       $53 = $labelInfo + 1310736 + ($43 + -5 << 2) | 0;
       HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($43 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $59 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $63 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $64 = $63 << 16 >> 16;
      $65 = $63 << 16 >> 16 > 0;
      if ($59 << 16 >> 16 <= 0) {
       if ($65) {
        HEAP16[$pnt2$367 >> 1] = $63;
        $165 = $64 * 7 | 0;
        $167 = $labelInfo + 1310736 + ($165 + -7 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 1;
        $171 = $labelInfo + 1310736 + ($165 + -6 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $i$264;
        $175 = $labelInfo + 1310736 + ($165 + -5 << 2) | 0;
        HEAP32[$175 >> 2] = (HEAP32[$175 >> 2] | 0) + $j$075;
        $179 = $labelInfo + 1310736 + ($165 + -3 << 2) | 0;
        if ((HEAP32[$179 >> 2] | 0) < ($i$264 | 0)) HEAP32[$179 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($165 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $185 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($185 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $185;
        $188 = ($185 << 16 >> 16) * 7 | 0;
        $190 = $labelInfo + 1310736 + ($188 + -7 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + 1;
        $194 = $labelInfo + 1310736 + ($188 + -6 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $i$264;
        $198 = $labelInfo + 1310736 + ($188 + -5 << 2) | 0;
        HEAP32[$198 >> 2] = (HEAP32[$198 >> 2] | 0) + $j$075;
        $202 = $labelInfo + 1310736 + ($188 + -3 << 2) | 0;
        if ((HEAP32[$202 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$202 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $205 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $205;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $205 << 16 >> 16;
        $210 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($210 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($210 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($210 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($210 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $205;
        break;
       }
      }
      if ($65) {
       $68 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       $71 = HEAP32[$labelInfo + 1179664 + ($64 + -1 << 2) >> 2] | 0;
       if (($68 | 0) > ($71 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $71;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $17;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$056 >> 2] = $71;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $88 = $71;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $88 = $71;
       } else {
        HEAP16[$pnt2$367 >> 1] = $68;
        if (($68 | 0) < ($71 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $17;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$153 >> 2] = $68;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $88 = $68;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $88 = $68;
       }
       $90 = ($88 << 16 >> 16) * 7 | 0;
       $92 = $labelInfo + 1310736 + ($90 + -7 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + 1;
       $96 = $labelInfo + 1310736 + ($90 + -6 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $i$264;
       $100 = $labelInfo + 1310736 + ($90 + -5 << 2) | 0;
       HEAP32[$100 >> 2] = (HEAP32[$100 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($90 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $106 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($106 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $59;
       $146 = $60 * 7 | 0;
       $148 = $labelInfo + 1310736 + ($146 + -7 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + 1;
       $152 = $labelInfo + 1310736 + ($146 + -6 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $i$264;
       $156 = $labelInfo + 1310736 + ($146 + -5 << 2) | 0;
       HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + $j$075;
       $160 = $labelInfo + 1310736 + ($146 + -4 << 2) | 0;
       if ((HEAP32[$160 >> 2] | 0) > ($i$264 | 0)) HEAP32[$160 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($146 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $111 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
      $114 = HEAP32[$labelInfo + 1179664 + (($106 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($111 | 0) > ($114 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $114;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $17;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$249 >> 2] = $114;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $131 = $114;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $131 = $114;
      } else {
       HEAP16[$pnt2$367 >> 1] = $111;
       if (($111 | 0) < ($114 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $17;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$346 >> 2] = $111;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $131 = $111;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $131 = $111;
      }
      $133 = ($131 << 16 >> 16) * 7 | 0;
      $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
      $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$264;
      $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
      HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $225 = $pnt$168 + 4 | 0;
     $226 = $pnt2$367 + 2 | 0;
     $227 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($10 | 0)) {
      $dpnt$1$lcssa = $227;
      $pnt$1$lcssa = $225;
      $pnt2$3$lcssa = $226;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $227;
      $pnt$168 = $225;
      $pnt2$367 = $226;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 8 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $17;
   while (1) {
    $236 = HEAP32[$wk$443 >> 2] | 0;
    if (($236 | 0) == ($i$341 | 0)) {
     $242 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $242;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $254 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$537 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $324 = $i$636 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $30 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($30) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($36 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $36;
       $39 = ($36 << 16 >> 16) * 7 | 0;
       $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1;
       $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265;
       $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $61 = $59 << 16 >> 16 > 0;
      if ($55 << 16 >> 16 <= 0) {
       if ($61) {
        HEAP16[$pnt2$368 >> 1] = $59;
        $161 = $60 * 7 | 0;
        $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1;
        $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265;
        $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076;
        $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0;
        if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($181 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $181;
        $184 = ($181 << 16 >> 16) * 7 | 0;
        $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1;
        $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265;
        $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076;
        $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0;
        if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$198 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $201 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $201;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16;
        $206 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $201;
        break;
       }
      }
      if ($61) {
       $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       if (($64 | 0) > ($67 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $67;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $84 = $67;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $84 = $67;
       } else {
        HEAP16[$pnt2$368 >> 1] = $64;
        if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $84 = $64;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $84 = $64;
       }
       $86 = ($84 << 16 >> 16) * 7 | 0;
       $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1;
       $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265;
       $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($102 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $55;
       $142 = $56 * 7 | 0;
       $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1;
       $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265;
       $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076;
       $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0;
       if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
      $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($107 | 0) > ($110 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $110;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $127 = $110;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $127 = $110;
      } else {
       HEAP16[$pnt2$368 >> 1] = $107;
       if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $127 = $107;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $127 = $107;
      }
      $129 = ($127 << 16 >> 16) * 7 | 0;
      $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1;
      $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265;
      $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $221 = $pnt$169 + 4 | 0;
     $222 = $pnt2$368 + 2 | 0;
     $223 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $223;
      $pnt$1$lcssa = $221;
      $pnt2$3$lcssa = $222;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $223;
      $pnt$169 = $221;
      $pnt2$368 = $222;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $230 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $232 = HEAP32[$wk$444 >> 2] | 0;
    if (($232 | 0) == ($i$342 | 0)) {
     $238 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $238;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $242 = $labelInfo + 8 | 0;
  $243 = $j$1$lcssa + -1 | 0;
  HEAP32[$242 >> 2] = $243;
  if (!$243) $$0 = 0; else {
   _memset($230 | 0, 0, $243 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $250 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $265 = $i$538 * 7 | 0;
     $268 = $labelInfo + 12 + ($264 << 2) | 0;
     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);
     $275 = $264 << 1;
     $276 = $labelInfo + 655376 + ($275 << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);
     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);
     $287 = $264 << 2;
     $288 = $labelInfo + 131084 + ($287 << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$242 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $317 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $320 = $i$637 << 1;
     $321 = $labelInfo + 655376 + ($320 << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $107 = 0, $11 = 0, $110 = 0, $127 = 0, $129 = 0, $131 = 0, $135 = 0, $139 = 0, $142 = 0, $144 = 0, $148 = 0, $152 = 0, $156 = 0, $161 = 0, $163 = 0, $167 = 0, $171 = 0, $175 = 0, $18 = 0, $181 = 0, $184 = 0, $186 = 0, $19 = 0, $190 = 0, $194 = 0, $198 = 0, $2 = 0, $201 = 0, $206 = 0, $21 = 0, $221 = 0, $222 = 0, $223 = 0, $230 = 0, $232 = 0, $238 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $36 = 0, $39 = 0, $41 = 0, $45 = 0, $49 = 0, $55 = 0, $56 = 0, $59 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $84 = 0, $86 = 0, $88 = 0, $92 = 0, $96 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $30 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($30) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $36 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($36 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $36;
       $39 = ($36 << 16 >> 16) * 7 | 0;
       $41 = $labelInfo + 1310736 + ($39 + -7 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + 1;
       $45 = $labelInfo + 1310736 + ($39 + -6 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $i$265;
       $49 = $labelInfo + 1310736 + ($39 + -5 << 2) | 0;
       HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($39 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $55 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $59 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $60 = $59 << 16 >> 16;
      $61 = $59 << 16 >> 16 > 0;
      if ($55 << 16 >> 16 <= 0) {
       if ($61) {
        HEAP16[$pnt2$368 >> 1] = $59;
        $161 = $60 * 7 | 0;
        $163 = $labelInfo + 1310736 + ($161 + -7 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + 1;
        $167 = $labelInfo + 1310736 + ($161 + -6 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $i$265;
        $171 = $labelInfo + 1310736 + ($161 + -5 << 2) | 0;
        HEAP32[$171 >> 2] = (HEAP32[$171 >> 2] | 0) + $j$076;
        $175 = $labelInfo + 1310736 + ($161 + -3 << 2) | 0;
        if ((HEAP32[$175 >> 2] | 0) < ($i$265 | 0)) HEAP32[$175 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($161 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $181 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($181 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $181;
        $184 = ($181 << 16 >> 16) * 7 | 0;
        $186 = $labelInfo + 1310736 + ($184 + -7 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + 1;
        $190 = $labelInfo + 1310736 + ($184 + -6 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $i$265;
        $194 = $labelInfo + 1310736 + ($184 + -5 << 2) | 0;
        HEAP32[$194 >> 2] = (HEAP32[$194 >> 2] | 0) + $j$076;
        $198 = $labelInfo + 1310736 + ($184 + -3 << 2) | 0;
        if ((HEAP32[$198 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$198 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $201 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $201;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $201 << 16 >> 16;
        $206 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($206 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($206 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($206 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($206 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($206 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $201;
        break;
       }
      }
      if ($61) {
       $64 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       $67 = HEAP32[$labelInfo + 1179664 + ($60 + -1 << 2) >> 2] | 0;
       if (($64 | 0) > ($67 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $67;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$057 >> 2] = $67;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $84 = $67;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $84 = $67;
       } else {
        HEAP16[$pnt2$368 >> 1] = $64;
        if (($64 | 0) < ($67 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$154 >> 2] = $64;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $84 = $64;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $84 = $64;
       }
       $86 = ($84 << 16 >> 16) * 7 | 0;
       $88 = $labelInfo + 1310736 + ($86 + -7 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + 1;
       $92 = $labelInfo + 1310736 + ($86 + -6 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $i$265;
       $96 = $labelInfo + 1310736 + ($86 + -5 << 2) | 0;
       HEAP32[$96 >> 2] = (HEAP32[$96 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($86 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $102 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($102 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $55;
       $142 = $56 * 7 | 0;
       $144 = $labelInfo + 1310736 + ($142 + -7 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + 1;
       $148 = $labelInfo + 1310736 + ($142 + -6 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $i$265;
       $152 = $labelInfo + 1310736 + ($142 + -5 << 2) | 0;
       HEAP32[$152 >> 2] = (HEAP32[$152 >> 2] | 0) + $j$076;
       $156 = $labelInfo + 1310736 + ($142 + -4 << 2) | 0;
       if ((HEAP32[$156 >> 2] | 0) > ($i$265 | 0)) HEAP32[$156 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($142 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $107 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
      $110 = HEAP32[$labelInfo + 1179664 + (($102 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($107 | 0) > ($110 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $110;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$250 >> 2] = $110;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $127 = $110;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $127 = $110;
      } else {
       HEAP16[$pnt2$368 >> 1] = $107;
       if (($107 | 0) < ($110 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$347 >> 2] = $107;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $127 = $107;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $127 = $107;
      }
      $129 = ($127 << 16 >> 16) * 7 | 0;
      $131 = $labelInfo + 1310736 + ($129 + -7 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + 1;
      $135 = $labelInfo + 1310736 + ($129 + -6 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $i$265;
      $139 = $labelInfo + 1310736 + ($129 + -5 << 2) | 0;
      HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $221 = $pnt$169 + 4 | 0;
     $222 = $pnt2$368 + 2 | 0;
     $223 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $223;
      $pnt$1$lcssa = $221;
      $pnt2$3$lcssa = $222;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $223;
      $pnt$169 = $221;
      $pnt2$368 = $222;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $230 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $232 = HEAP32[$wk$444 >> 2] | 0;
    if (($232 | 0) == ($i$342 | 0)) {
     $238 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $238;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $242 = $labelInfo + 8 | 0;
  $243 = $j$1$lcssa + -1 | 0;
  HEAP32[$242 >> 2] = $243;
  if (!$243) $$0 = 0; else {
   _memset($230 | 0, 0, $243 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $250 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$242 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $264 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $265 = $i$538 * 7 | 0;
     $268 = $labelInfo + 12 + ($264 << 2) | 0;
     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);
     $275 = $264 << 1;
     $276 = $labelInfo + 655376 + ($275 << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);
     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);
     $287 = $264 << 2;
     $288 = $labelInfo + 131084 + ($287 << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$242 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $317 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $320 = $i$637 << 1;
     $321 = $labelInfo + 655376 + ($320 << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$242 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $30 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($30) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($35 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $35;
       $38 = ($35 << 16 >> 16) * 7 | 0;
       $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1;
       $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265;
       $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $59 = $58 << 16 >> 16;
      $60 = $58 << 16 >> 16 > 0;
      if ($54 << 16 >> 16 <= 0) {
       if ($60) {
        HEAP16[$pnt2$368 >> 1] = $58;
        $160 = $59 * 7 | 0;
        $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1;
        $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265;
        $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076;
        $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0;
        if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($180 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $180;
        $183 = ($180 << 16 >> 16) * 7 | 0;
        $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1;
        $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265;
        $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076;
        $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0;
        if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$197 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $200 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $200;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16;
        $205 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $200;
        break;
       }
      }
      if ($60) {
       $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
       if (($63 | 0) > ($66 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $66;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $83 = $66;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $83 = $66;
       } else {
        HEAP16[$pnt2$368 >> 1] = $63;
        if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $83 = $63;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $83 = $63;
       }
       $85 = ($83 << 16 >> 16) * 7 | 0;
       $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1;
       $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265;
       $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($101 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $54;
       $141 = $55 * 7 | 0;
       $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1;
       $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265;
       $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076;
       $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0;
       if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
      $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($106 | 0) > ($109 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $109;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $126 = $109;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $126 = $109;
      } else {
       HEAP16[$pnt2$368 >> 1] = $106;
       if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $126 = $106;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $126 = $106;
      }
      $128 = ($126 << 16 >> 16) * 7 | 0;
      $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1;
      $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265;
      $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $220 = $pnt$169 + 4 | 0;
     $221 = $pnt2$368 + 2 | 0;
     $222 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $222;
      $pnt$1$lcssa = $220;
      $pnt2$3$lcssa = $221;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $222;
      $pnt$169 = $220;
      $pnt2$368 = $221;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $231 = HEAP32[$wk$444 >> 2] | 0;
    if (($231 | 0) == ($i$342 | 0)) {
     $237 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $237;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $249 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$538 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $319 = $i$637 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}
function _arLabelingSubEWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $106 = 0, $109 = 0, $11 = 0, $126 = 0, $128 = 0, $130 = 0, $134 = 0, $138 = 0, $141 = 0, $143 = 0, $147 = 0, $151 = 0, $155 = 0, $160 = 0, $162 = 0, $166 = 0, $170 = 0, $174 = 0, $18 = 0, $180 = 0, $183 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $2 = 0, $200 = 0, $205 = 0, $21 = 0, $220 = 0, $221 = 0, $222 = 0, $229 = 0, $231 = 0, $237 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $3 = 0, $30 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $35 = 0, $38 = 0, $40 = 0, $44 = 0, $48 = 0, $54 = 0, $55 = 0, $58 = 0, $59 = 0, $60 = 0, $63 = 0, $66 = 0, $83 = 0, $85 = 0, $87 = 0, $91 = 0, $95 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $30 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($30) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $35 = HEAP16[$pnt2$368 + ($21 << 1) >> 1] | 0;
      if ($35 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $35;
       $38 = ($35 << 16 >> 16) * 7 | 0;
       $40 = $labelInfo + 1310736 + ($38 + -7 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + 1;
       $44 = $labelInfo + 1310736 + ($38 + -6 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $i$265;
       $48 = $labelInfo + 1310736 + ($38 + -5 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($38 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $54 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $58 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $59 = $58 << 16 >> 16;
      $60 = $58 << 16 >> 16 > 0;
      if ($54 << 16 >> 16 <= 0) {
       if ($60) {
        HEAP16[$pnt2$368 >> 1] = $58;
        $160 = $59 * 7 | 0;
        $162 = $labelInfo + 1310736 + ($160 + -7 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + 1;
        $166 = $labelInfo + 1310736 + ($160 + -6 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $i$265;
        $170 = $labelInfo + 1310736 + ($160 + -5 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $j$076;
        $174 = $labelInfo + 1310736 + ($160 + -3 << 2) | 0;
        if ((HEAP32[$174 >> 2] | 0) < ($i$265 | 0)) HEAP32[$174 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($160 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $180 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($180 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $180;
        $183 = ($180 << 16 >> 16) * 7 | 0;
        $185 = $labelInfo + 1310736 + ($183 + -7 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + 1;
        $189 = $labelInfo + 1310736 + ($183 + -6 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $i$265;
        $193 = $labelInfo + 1310736 + ($183 + -5 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $j$076;
        $197 = $labelInfo + 1310736 + ($183 + -3 << 2) | 0;
        if ((HEAP32[$197 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$197 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $200 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $200;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $200 << 16 >> 16;
        $205 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($205 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($205 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($205 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($205 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($205 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $200;
        break;
       }
      }
      if ($60) {
       $63 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       $66 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
       if (($63 | 0) > ($66 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $66;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$057 >> 2] = $66;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $83 = $66;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $83 = $66;
       } else {
        HEAP16[$pnt2$368 >> 1] = $63;
        if (($63 | 0) < ($66 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$154 >> 2] = $63;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $83 = $63;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $83 = $63;
       }
       $85 = ($83 << 16 >> 16) * 7 | 0;
       $87 = $labelInfo + 1310736 + ($85 + -7 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + 1;
       $91 = $labelInfo + 1310736 + ($85 + -6 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $i$265;
       $95 = $labelInfo + 1310736 + ($85 + -5 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($85 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $101 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($101 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $54;
       $141 = $55 * 7 | 0;
       $143 = $labelInfo + 1310736 + ($141 + -7 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + 1;
       $147 = $labelInfo + 1310736 + ($141 + -6 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $i$265;
       $151 = $labelInfo + 1310736 + ($141 + -5 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $j$076;
       $155 = $labelInfo + 1310736 + ($141 + -4 << 2) | 0;
       if ((HEAP32[$155 >> 2] | 0) > ($i$265 | 0)) HEAP32[$155 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($141 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $106 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
      $109 = HEAP32[$labelInfo + 1179664 + (($101 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($106 | 0) > ($109 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $109;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$250 >> 2] = $109;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $126 = $109;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $126 = $109;
      } else {
       HEAP16[$pnt2$368 >> 1] = $106;
       if (($106 | 0) < ($109 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$347 >> 2] = $106;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $126 = $106;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $126 = $106;
      }
      $128 = ($126 << 16 >> 16) * 7 | 0;
      $130 = $labelInfo + 1310736 + ($128 + -7 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + 1;
      $134 = $labelInfo + 1310736 + ($128 + -6 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $i$265;
      $138 = $labelInfo + 1310736 + ($128 + -5 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $220 = $pnt$169 + 4 | 0;
     $221 = $pnt2$368 + 2 | 0;
     $222 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $222;
      $pnt$1$lcssa = $220;
      $pnt2$3$lcssa = $221;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $222;
      $pnt$169 = $220;
      $pnt2$368 = $221;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $231 = HEAP32[$wk$444 >> 2] | 0;
    if (($231 | 0) == ($i$342 | 0)) {
     $237 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $237;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $249 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$538 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $319 = $i$637 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = $xsize + 4 | 0;
 L11 : do if (($3 | 0) > 1) {
  $29 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 1) + 2) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($29) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$167 >> 0] = -1;
      $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0;
      if ($34 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $34;
       $37 = ($34 << 16 >> 16) * 7 | 0;
       $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0;
       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1;
       $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265;
       $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $54 = $53 << 16 >> 16;
      $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $58 = $57 << 16 >> 16;
      $59 = $57 << 16 >> 16 > 0;
      if ($53 << 16 >> 16 <= 0) {
       if ($59) {
        HEAP16[$pnt2$368 >> 1] = $57;
        $159 = $58 * 7 | 0;
        $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0;
        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1;
        $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265;
        $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076;
        $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0;
        if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($179 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $179;
        $182 = ($179 << 16 >> 16) * 7 | 0;
        $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0;
        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1;
        $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265;
        $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076;
        $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0;
        if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$196 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $199 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $199;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16;
        $204 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $199;
        break;
       }
      }
      if ($59) {
       $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
       $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
       if (($62 | 0) > ($65 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $65;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $82 = $65;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $82 = $65;
       } else {
        HEAP16[$pnt2$368 >> 1] = $62;
        if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $82 = $62;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $82 = $62;
       }
       $84 = ($82 << 16 >> 16) * 7 | 0;
       $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0;
       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1;
       $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265;
       $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($100 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $53;
       $140 = $54 * 7 | 0;
       $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
       $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265;
       $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076;
       $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0;
       if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
      $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($105 | 0) > ($108 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $108;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $125 = $108;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $125 = $108;
      } else {
       HEAP16[$pnt2$368 >> 1] = $105;
       if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $125 = $105;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $125 = $105;
      }
      $127 = ($125 << 16 >> 16) * 7 | 0;
      $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0;
      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1;
      $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265;
      $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $219 = $pnt$169 + 2 | 0;
     $220 = $pnt2$368 + 2 | 0;
     $221 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $221;
      $pnt$1$lcssa = $219;
      $pnt2$3$lcssa = $220;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $221;
      $pnt$169 = $219;
      $pnt2$368 = $220;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $228 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $230 = HEAP32[$wk$444 >> 2] | 0;
    if (($230 | 0) == ($i$342 | 0)) {
     $236 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $236;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $240 = $labelInfo + 8 | 0;
  $241 = $j$1$lcssa + -1 | 0;
  HEAP32[$240 >> 2] = $241;
  if (!$241) $$0 = 0; else {
   _memset($228 | 0, 0, $241 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $248 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $263 = $i$538 * 7 | 0;
     $266 = $labelInfo + 12 + ($262 << 2) | 0;
     HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0);
     $273 = $262 << 1;
     $274 = $labelInfo + 655376 + ($273 << 3) | 0;
     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0);
     $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0;
     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0);
     $285 = $262 << 2;
     $286 = $labelInfo + 131084 + ($285 << 2) | 0;
     $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290;
     $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$240 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $315 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $318 = $i$637 << 1;
     $319 = $labelInfo + 655376 + ($318 << 3) | 0;
     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0);
     $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}
function _arLabelingSubEBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $100 = 0, $105 = 0, $108 = 0, $11 = 0, $125 = 0, $127 = 0, $129 = 0, $133 = 0, $137 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $154 = 0, $159 = 0, $161 = 0, $165 = 0, $169 = 0, $173 = 0, $179 = 0, $18 = 0, $182 = 0, $184 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $199 = 0, $2 = 0, $20 = 0, $204 = 0, $219 = 0, $220 = 0, $221 = 0, $228 = 0, $230 = 0, $236 = 0, $240 = 0, $241 = 0, $248 = 0, $262 = 0, $263 = 0, $266 = 0, $273 = 0, $274 = 0, $282 = 0, $285 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $3 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $315 = 0, $318 = 0, $319 = 0, $325 = 0, $34 = 0, $37 = 0, $39 = 0, $43 = 0, $47 = 0, $53 = 0, $54 = 0, $57 = 0, $58 = 0, $59 = 0, $62 = 0, $65 = 0, $82 = 0, $84 = 0, $86 = 0, $90 = 0, $94 = 0, $dpnt$078 = 0, $dpnt$1$lcssa = 0, $dpnt$167 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$342 = 0, $i$440 = 0, $i$538 = 0, $i$637 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$143 = 0, $j$2 = 0, $k$056 = 0, $k$153 = 0, $k$249 = 0, $k$346 = 0, $pnt$080 = 0, $pnt$1$lcssa = 0, $pnt$169 = 0, $pnt1$091 = 0, $pnt1$185 = 0, $pnt2$090 = 0, $pnt2$184 = 0, $pnt2$279 = 0, $pnt2$3$lcssa = 0, $pnt2$368 = 0, $vararg_buffer = 0, $wk$057 = 0, $wk$154 = 0, $wk$250 = 0, $wk$347 = 0, $wk$444 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$089 = 0;
  $pnt1$091 = $2;
  $pnt2$090 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$090 >> 1] = 0;
   HEAP16[$pnt1$091 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($0 | 0)) break; else {
    $pnt1$091 = $pnt1$091 + 2 | 0;
    $pnt2$090 = $pnt2$090 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$183 = 0;
  $pnt1$185 = $2;
  $pnt2$184 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$184 >> 1] = 0;
   HEAP16[$pnt1$185 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($1 | 0)) break; else {
    $pnt1$185 = $pnt1$185 + ($0 << 1) | 0;
    $pnt2$184 = $pnt2$184 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = $0 + 1 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = $xsize + 4 | 0;
 L11 : do if (($3 | 0) > 1) {
  $29 = ($11 | 0) > 1;
  $dpnt$078 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $19 | 0;
  $j$076 = 1;
  $pnt$080 = $image + (($xsize << 1) + 2) | 0;
  $pnt2$279 = $2 + ($19 << 1) | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($29) {
    $dpnt$167 = $dpnt$078;
    $i$265 = 1;
    $pnt$169 = $pnt$080;
    $pnt2$368 = $pnt2$279;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$169 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$368 >> 1] = 0;
      HEAP8[$dpnt$167 >> 0] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP8[$dpnt$167 >> 0] = -1;
      $34 = HEAP16[$pnt2$368 + ($20 << 1) >> 1] | 0;
      if ($34 << 16 >> 16 > 0) {
       HEAP16[$pnt2$368 >> 1] = $34;
       $37 = ($34 << 16 >> 16) * 7 | 0;
       $39 = $labelInfo + 1310736 + ($37 + -7 << 2) | 0;
       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + 1;
       $43 = $labelInfo + 1310736 + ($37 + -6 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $i$265;
       $47 = $labelInfo + 1310736 + ($37 + -5 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($37 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $53 = HEAP16[$pnt2$368 + ($$sum1 << 1) >> 1] | 0;
      $54 = $53 << 16 >> 16;
      $57 = HEAP16[$pnt2$368 + ($$sum2 << 1) >> 1] | 0;
      $58 = $57 << 16 >> 16;
      $59 = $57 << 16 >> 16 > 0;
      if ($53 << 16 >> 16 <= 0) {
       if ($59) {
        HEAP16[$pnt2$368 >> 1] = $57;
        $159 = $58 * 7 | 0;
        $161 = $labelInfo + 1310736 + ($159 + -7 << 2) | 0;
        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + 1;
        $165 = $labelInfo + 1310736 + ($159 + -6 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $i$265;
        $169 = $labelInfo + 1310736 + ($159 + -5 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $j$076;
        $173 = $labelInfo + 1310736 + ($159 + -3 << 2) | 0;
        if ((HEAP32[$173 >> 2] | 0) < ($i$265 | 0)) HEAP32[$173 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($159 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $179 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
       if ($179 << 16 >> 16 > 0) {
        HEAP16[$pnt2$368 >> 1] = $179;
        $182 = ($179 << 16 >> 16) * 7 | 0;
        $184 = $labelInfo + 1310736 + ($182 + -7 << 2) | 0;
        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + 1;
        $188 = $labelInfo + 1310736 + ($182 + -6 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $i$265;
        $192 = $labelInfo + 1310736 + ($182 + -5 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $j$076;
        $196 = $labelInfo + 1310736 + ($182 + -3 << 2) | 0;
        if ((HEAP32[$196 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$196 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $199 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$368 >> 1] = $199;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $199 << 16 >> 16;
        $204 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($204 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($204 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($204 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($204 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($204 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $199;
        break;
       }
      }
      if ($59) {
       $62 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
       $65 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
       if (($62 | 0) > ($65 | 0)) {
        HEAP16[$pnt2$368 >> 1] = $65;
        if (($wk_max$160 | 0) > 0) {
         $k$056 = 0;
         $wk$057 = $18;
         while (1) {
          if ((HEAP32[$wk$057 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$057 >> 2] = $65;
          $k$056 = $k$056 + 1 | 0;
          if (($k$056 | 0) >= ($wk_max$160 | 0)) {
           $82 = $65;
           break;
          } else $wk$057 = $wk$057 + 4 | 0;
         }
        } else $82 = $65;
       } else {
        HEAP16[$pnt2$368 >> 1] = $62;
        if (($62 | 0) < ($65 | 0) & ($wk_max$160 | 0) > 0) {
         $k$153 = 0;
         $wk$154 = $18;
         while (1) {
          if ((HEAP32[$wk$154 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$154 >> 2] = $62;
          $k$153 = $k$153 + 1 | 0;
          if (($k$153 | 0) >= ($wk_max$160 | 0)) {
           $82 = $62;
           break;
          } else $wk$154 = $wk$154 + 4 | 0;
         }
        } else $82 = $62;
       }
       $84 = ($82 << 16 >> 16) * 7 | 0;
       $86 = $labelInfo + 1310736 + ($84 + -7 << 2) | 0;
       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 1;
       $90 = $labelInfo + 1310736 + ($84 + -6 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $i$265;
       $94 = $labelInfo + 1310736 + ($84 + -5 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($84 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $100 = HEAP16[$pnt2$368 + -2 >> 1] | 0;
      if ($100 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$368 >> 1] = $53;
       $140 = $54 * 7 | 0;
       $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
       $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$265;
       $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$076;
       $154 = $labelInfo + 1310736 + ($140 + -4 << 2) | 0;
       if ((HEAP32[$154 >> 2] | 0) > ($i$265 | 0)) HEAP32[$154 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($140 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $105 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
      $108 = HEAP32[$labelInfo + 1179664 + (($100 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($105 | 0) > ($108 | 0)) {
       HEAP16[$pnt2$368 >> 1] = $108;
       if (($wk_max$160 | 0) > 0) {
        $k$249 = 0;
        $wk$250 = $18;
        while (1) {
         if ((HEAP32[$wk$250 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$250 >> 2] = $108;
         $k$249 = $k$249 + 1 | 0;
         if (($k$249 | 0) >= ($wk_max$160 | 0)) {
          $125 = $108;
          break;
         } else $wk$250 = $wk$250 + 4 | 0;
        }
       } else $125 = $108;
      } else {
       HEAP16[$pnt2$368 >> 1] = $105;
       if (($105 | 0) < ($108 | 0) & ($wk_max$160 | 0) > 0) {
        $k$346 = 0;
        $wk$347 = $18;
        while (1) {
         if ((HEAP32[$wk$347 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$347 >> 2] = $105;
         $k$346 = $k$346 + 1 | 0;
         if (($k$346 | 0) >= ($wk_max$160 | 0)) {
          $125 = $105;
          break;
         } else $wk$347 = $wk$347 + 4 | 0;
        }
       } else $125 = $105;
      }
      $127 = ($125 << 16 >> 16) * 7 | 0;
      $129 = $labelInfo + 1310736 + ($127 + -7 << 2) | 0;
      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + 1;
      $133 = $labelInfo + 1310736 + ($127 + -6 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $i$265;
      $137 = $labelInfo + 1310736 + ($127 + -5 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $219 = $pnt$169 + 2 | 0;
     $220 = $pnt2$368 + 2 | 0;
     $221 = $dpnt$167 + 1 | 0;
     if (($i$265 | 0) >= ($11 | 0)) {
      $dpnt$1$lcssa = $221;
      $pnt$1$lcssa = $219;
      $pnt2$3$lcssa = $220;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$167 = $221;
      $pnt$169 = $219;
      $pnt2$368 = $220;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$078;
    $pnt$1$lcssa = $pnt$080;
    $pnt2$3$lcssa = $pnt2$279;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$078 = $dpnt$1$lcssa + 2 | 0;
    $pnt$080 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$279 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $228 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$342 = 1;
   $j$143 = 1;
   $wk$444 = $18;
   while (1) {
    $230 = HEAP32[$wk$444 >> 2] | 0;
    if (($230 | 0) == ($i$342 | 0)) {
     $236 = $j$143;
     $j$2 = $j$143 + 1 | 0;
    } else {
     $236 = HEAP32[$labelInfo + 1179664 + ($230 + -1 << 2) >> 2] | 0;
     $j$2 = $j$143;
    }
    HEAP32[$wk$444 >> 2] = $236;
    if (($i$342 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$342 = $i$342 + 1 | 0;
     $j$143 = $j$2;
     $wk$444 = $wk$444 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $240 = $labelInfo + 8 | 0;
  $241 = $j$1$lcssa + -1 | 0;
  HEAP32[$240 >> 2] = $241;
  if (!$241) $$0 = 0; else {
   _memset($228 | 0, 0, $241 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $241 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$440 = 0;
    do {
     $248 = $i$440 << 2;
     HEAP32[$labelInfo + 131084 + ($248 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($248 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($248 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($248 | 3) << 2) >> 2] = 0;
     $i$440 = $i$440 + 1 | 0;
    } while (($i$440 | 0) < (HEAP32[$240 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$538 = 0;
    do {
     $262 = (HEAP32[$labelInfo + 1179664 + ($i$538 << 2) >> 2] | 0) + -1 | 0;
     $263 = $i$538 * 7 | 0;
     $266 = $labelInfo + 12 + ($262 << 2) | 0;
     HEAP32[$266 >> 2] = (HEAP32[$266 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($263 << 2) >> 2] | 0);
     $273 = $262 << 1;
     $274 = $labelInfo + 655376 + ($273 << 3) | 0;
     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 1 << 2) >> 2] | 0);
     $282 = $labelInfo + 655376 + (($273 | 1) << 3) | 0;
     HEAPF64[$282 >> 3] = +HEAPF64[$282 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($263 + 2 << 2) >> 2] | 0);
     $285 = $262 << 2;
     $286 = $labelInfo + 131084 + ($285 << 2) | 0;
     $290 = HEAP32[$labelInfo + 1310736 + ($263 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$286 >> 2] | 0) > ($290 | 0)) HEAP32[$286 >> 2] = $290;
     $293 = $labelInfo + 131084 + (($285 | 1) << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($263 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) < ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($285 | 2) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($263 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) > ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($285 | 3) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($263 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) < ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $i$538 = $i$538 + 1 | 0;
    } while (($i$538 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$240 >> 2] | 0) > 0) {
    $i$637 = 0;
    do {
     $315 = $labelInfo + 12 + ($i$637 << 2) | 0;
     $318 = $i$637 << 1;
     $319 = $labelInfo + 655376 + ($318 << 3) | 0;
     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$315 >> 2] | 0);
     $325 = $labelInfo + 655376 + (($318 | 1) << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$315 >> 2] | 0);
     $i$637 = $i$637 + 1 | 0;
    } while (($i$637 | 0) < (HEAP32[$240 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($17 << 1) | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($32 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $32;
       $35 = ($32 << 16 >> 16) * 7 | 0;
       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;
       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264;
       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $57 = $55 << 16 >> 16 > 0;
      if ($51 << 16 >> 16 <= 0) {
       if ($57) {
        HEAP16[$pnt2$367 >> 1] = $55;
        $157 = $56 * 7 | 0;
        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;
        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264;
        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075;
        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;
        if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($177 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $177;
        $180 = ($177 << 16 >> 16) * 7 | 0;
        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;
        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264;
        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075;
        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;
        if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$194 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $197 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $197;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16;
        $202 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $197;
        break;
       }
      }
      if ($57) {
       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       if (($60 | 0) > ($63 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $63;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $80 = $63;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $80 = $63;
       } else {
        HEAP16[$pnt2$367 >> 1] = $60;
        if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $80 = $60;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $80 = $60;
       }
       $82 = ($80 << 16 >> 16) * 7 | 0;
       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;
       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264;
       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($98 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $51;
       $138 = $52 * 7 | 0;
       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264;
       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075;
       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;
       if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($103 | 0) > ($106 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $106;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $123 = $106;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $123 = $106;
      } else {
       HEAP16[$pnt2$367 >> 1] = $103;
       if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $123 = $103;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $123 = $103;
      }
      $125 = ($123 << 16 >> 16) * 7 | 0;
      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;
      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264;
      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $217 = $pnt$168 + 2 | 0;
     $218 = $pnt2$367 + 2 | 0;
     $219 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $219;
      $pnt$1$lcssa = $217;
      $pnt2$3$lcssa = $218;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $219;
      $pnt$168 = $217;
      $pnt2$367 = $218;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $226 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $228 = HEAP32[$wk$443 >> 2] | 0;
    if (($228 | 0) == ($i$341 | 0)) {
     $234 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $234;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $238 = $labelInfo + 8 | 0;
  $239 = $j$1$lcssa + -1 | 0;
  HEAP32[$238 >> 2] = $239;
  if (!$239) $$0 = 0; else {
   _memset($226 | 0, 0, $239 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $246 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $261 = $i$537 * 7 | 0;
     $264 = $labelInfo + 12 + ($260 << 2) | 0;
     HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0);
     $271 = $260 << 1;
     $272 = $labelInfo + 655376 + ($271 << 3) | 0;
     HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0);
     $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0);
     $283 = $260 << 2;
     $284 = $labelInfo + 131084 + ($283 << 2) | 0;
     $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288;
     $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$238 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $313 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $316 = $i$636 << 1;
     $317 = $labelInfo + 655376 + ($316 << 3) | 0;
     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0);
     $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0;
     HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $202 = 0, $217 = 0, $218 = 0, $219 = 0, $226 = 0, $228 = 0, $234 = 0, $238 = 0, $239 = 0, $246 = 0, $26 = 0, $260 = 0, $261 = 0, $264 = 0, $271 = 0, $272 = 0, $280 = 0, $283 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $302 = 0, $305 = 0, $309 = 0, $313 = 0, $316 = 0, $317 = 0, $32 = 0, $323 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $9 = 0, $92 = 0, $98 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($17 << 1) | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $32 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($32 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $32;
       $35 = ($32 << 16 >> 16) * 7 | 0;
       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;
       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$264;
       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $51 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $55 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $57 = $55 << 16 >> 16 > 0;
      if ($51 << 16 >> 16 <= 0) {
       if ($57) {
        HEAP16[$pnt2$367 >> 1] = $55;
        $157 = $56 * 7 | 0;
        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;
        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$264;
        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$075;
        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;
        if ((HEAP32[$171 >> 2] | 0) < ($i$264 | 0)) HEAP32[$171 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $177 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($177 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $177;
        $180 = ($177 << 16 >> 16) * 7 | 0;
        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;
        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$264;
        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$075;
        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;
        if ((HEAP32[$194 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$194 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $197 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $197;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $197 << 16 >> 16;
        $202 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $197;
        break;
       }
      }
      if ($57) {
       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       if (($60 | 0) > ($63 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $63;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$056 >> 2] = $63;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $80 = $63;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $80 = $63;
       } else {
        HEAP16[$pnt2$367 >> 1] = $60;
        if (($60 | 0) < ($63 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$153 >> 2] = $60;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $80 = $60;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $80 = $60;
       }
       $82 = ($80 << 16 >> 16) * 7 | 0;
       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;
       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$264;
       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $98 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($98 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $51;
       $138 = $52 * 7 | 0;
       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$264;
       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$075;
       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;
       if ((HEAP32[$152 >> 2] | 0) > ($i$264 | 0)) HEAP32[$152 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($103 | 0) > ($106 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $106;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$249 >> 2] = $106;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $123 = $106;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $123 = $106;
      } else {
       HEAP16[$pnt2$367 >> 1] = $103;
       if (($103 | 0) < ($106 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$346 >> 2] = $103;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $123 = $103;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $123 = $103;
      }
      $125 = ($123 << 16 >> 16) * 7 | 0;
      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;
      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$264;
      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $217 = $pnt$168 + 2 | 0;
     $218 = $pnt2$367 + 2 | 0;
     $219 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $219;
      $pnt$1$lcssa = $217;
      $pnt2$3$lcssa = $218;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $219;
      $pnt$168 = $217;
      $pnt2$367 = $218;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $226 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $228 = HEAP32[$wk$443 >> 2] | 0;
    if (($228 | 0) == ($i$341 | 0)) {
     $234 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $234 = HEAP32[$labelInfo + 1179664 + ($228 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $234;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $238 = $labelInfo + 8 | 0;
  $239 = $j$1$lcssa + -1 | 0;
  HEAP32[$238 >> 2] = $239;
  if (!$239) $$0 = 0; else {
   _memset($226 | 0, 0, $239 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $239 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $246 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($246 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($246 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($246 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($246 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$238 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $260 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $261 = $i$537 * 7 | 0;
     $264 = $labelInfo + 12 + ($260 << 2) | 0;
     HEAP32[$264 >> 2] = (HEAP32[$264 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($261 << 2) >> 2] | 0);
     $271 = $260 << 1;
     $272 = $labelInfo + 655376 + ($271 << 3) | 0;
     HEAPF64[$272 >> 3] = +HEAPF64[$272 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 1 << 2) >> 2] | 0);
     $280 = $labelInfo + 655376 + (($271 | 1) << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($261 + 2 << 2) >> 2] | 0);
     $283 = $260 << 2;
     $284 = $labelInfo + 131084 + ($283 << 2) | 0;
     $288 = HEAP32[$labelInfo + 1310736 + ($261 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$284 >> 2] | 0) > ($288 | 0)) HEAP32[$284 >> 2] = $288;
     $291 = $labelInfo + 131084 + (($283 | 1) << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($261 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) < ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($283 | 2) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($261 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) > ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($283 | 3) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($261 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) < ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$238 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $313 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $316 = $i$636 << 1;
     $317 = $labelInfo + 655376 + ($316 << 3) | 0;
     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$313 >> 2] | 0);
     $323 = $labelInfo + 655376 + (($316 | 1) << 3) | 0;
     HEAPF64[$323 >> 3] = +HEAPF64[$323 >> 3] / +(HEAP32[$313 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$238 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($17 << 1) | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$367 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$193 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $196 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $62;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $79 = $62;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$367 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $79 = $59;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $105;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $122 = $105;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$367 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $122 = $102;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $216 = $pnt$168 + 2 | 0;
     $217 = $pnt2$367 + 2 | 0;
     $218 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $218;
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $218;
      $pnt$168 = $216;
      $pnt2$367 = $217;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $225 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $227 = HEAP32[$wk$443 >> 2] | 0;
    if (($227 | 0) == ($i$341 | 0)) {
     $233 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $233;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $237 = $labelInfo + 8 | 0;
  $238 = $j$1$lcssa + -1 | 0;
  HEAP32[$237 >> 2] = $238;
  if (!$238) $$0 = 0; else {
   _memset($225 | 0, 0, $238 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $245 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $260 = $i$537 * 7 | 0;
     $263 = $labelInfo + 12 + ($259 << 2) | 0;
     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);
     $270 = $259 << 1;
     $271 = $labelInfo + 655376 + ($270 << 3) | 0;
     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);
     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);
     $282 = $259 << 2;
     $283 = $labelInfo + 131084 + ($282 << 2) | 0;
     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;
     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;
     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;
     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$237 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $312 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $315 = $i$636 << 1;
     $316 = $labelInfo + 655376 + ($315 << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $193 = 0, $196 = 0, $201 = 0, $216 = 0, $217 = 0, $218 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $26 = 0, $260 = 0, $263 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $301 = 0, $304 = 0, $308 = 0, $31 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $26 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + ($17 << 1) | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($26) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $31 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$264;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $50 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$367 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$264;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$075;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$264 | 0)) HEAP32[$170 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $176 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$264;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$075;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$193 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $196 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $62;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$056 >> 2] = $62;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $79 = $62;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$367 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$153 >> 2] = $59;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $79 = $59;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$264;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $97 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$264;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$075;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$264 | 0)) HEAP32[$151 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $105;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$249 >> 2] = $105;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $122 = $105;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$367 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$346 >> 2] = $102;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $122 = $102;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$264;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $216 = $pnt$168 + 2 | 0;
     $217 = $pnt2$367 + 2 | 0;
     $218 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $218;
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $218;
      $pnt$168 = $216;
      $pnt2$367 = $217;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 4 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $225 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $227 = HEAP32[$wk$443 >> 2] | 0;
    if (($227 | 0) == ($i$341 | 0)) {
     $233 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $233;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $237 = $labelInfo + 8 | 0;
  $238 = $j$1$lcssa + -1 | 0;
  HEAP32[$237 >> 2] = $238;
  if (!$238) $$0 = 0; else {
   _memset($225 | 0, 0, $238 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $245 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$237 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $259 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $260 = $i$537 * 7 | 0;
     $263 = $labelInfo + 12 + ($259 << 2) | 0;
     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);
     $270 = $259 << 1;
     $271 = $labelInfo + 655376 + ($270 << 3) | 0;
     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);
     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);
     $282 = $259 << 2;
     $283 = $labelInfo + 131084 + ($282 << 2) | 0;
     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;
     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;
     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;
     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$237 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $312 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $315 = $i$636 << 1;
     $316 = $labelInfo + 655376 + ($315 << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$237 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $25 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + $17 | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($25) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP8[$dpnt$166 >> 0] = -1;
      $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($30 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $30;
       $33 = ($30 << 16 >> 16) * 7 | 0;
       $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0;
       HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1;
       $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0;
       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264;
       $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $50 = $49 << 16 >> 16;
      $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $54 = $53 << 16 >> 16;
      $55 = $53 << 16 >> 16 > 0;
      if ($49 << 16 >> 16 <= 0) {
       if ($55) {
        HEAP16[$pnt2$367 >> 1] = $53;
        $155 = $54 * 7 | 0;
        $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0;
        HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1;
        $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0;
        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264;
        $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075;
        $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0;
        if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($175 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $175;
        $178 = ($175 << 16 >> 16) * 7 | 0;
        $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0;
        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1;
        $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0;
        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264;
        $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075;
        $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0;
        if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$192 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $195 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $195;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16;
        $200 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $195;
        break;
       }
      }
      if ($55) {
       $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;
       $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
       if (($58 | 0) > ($61 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $61;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $78 = $61;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $78 = $61;
       } else {
        HEAP16[$pnt2$367 >> 1] = $58;
        if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $78 = $58;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $78 = $58;
       }
       $80 = ($78 << 16 >> 16) * 7 | 0;
       $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0;
       HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1;
       $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0;
       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264;
       $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($96 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $49;
       $136 = $50 * 7 | 0;
       $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
       HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
       $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264;
       $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075;
       $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0;
       if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;
      $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($101 | 0) > ($104 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $104;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $121 = $104;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $121 = $104;
      } else {
       HEAP16[$pnt2$367 >> 1] = $101;
       if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $121 = $101;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $121 = $101;
      }
      $123 = ($121 << 16 >> 16) * 7 | 0;
      $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0;
      HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1;
      $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0;
      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264;
      $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $215 = $pnt$168 + 1 | 0;
     $216 = $pnt2$367 + 2 | 0;
     $217 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $217;
      $pnt$1$lcssa = $215;
      $pnt2$3$lcssa = $216;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $217;
      $pnt$168 = $215;
      $pnt2$367 = $216;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 2 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $224 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $226 = HEAP32[$wk$443 >> 2] | 0;
    if (($226 | 0) == ($i$341 | 0)) {
     $232 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $232;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $236 = $labelInfo + 8 | 0;
  $237 = $j$1$lcssa + -1 | 0;
  HEAP32[$236 >> 2] = $237;
  if (!$237) $$0 = 0; else {
   _memset($224 | 0, 0, $237 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $244 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $259 = $i$537 * 7 | 0;
     $262 = $labelInfo + 12 + ($258 << 2) | 0;
     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);
     $269 = $258 << 1;
     $270 = $labelInfo + 655376 + ($269 << 3) | 0;
     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);
     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;
     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);
     $281 = $258 << 2;
     $282 = $labelInfo + 131084 + ($281 << 2) | 0;
     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;
     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$236 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $311 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $314 = $i$636 << 1;
     $315 = $labelInfo + 655376 + ($314 << 3) | 0;
     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubEBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $104 = 0, $121 = 0, $123 = 0, $125 = 0, $129 = 0, $133 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $150 = 0, $155 = 0, $157 = 0, $16 = 0, $161 = 0, $165 = 0, $169 = 0, $17 = 0, $175 = 0, $178 = 0, $18 = 0, $180 = 0, $184 = 0, $188 = 0, $192 = 0, $195 = 0, $200 = 0, $215 = 0, $216 = 0, $217 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $25 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $30 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $321 = 0, $33 = 0, $35 = 0, $39 = 0, $43 = 0, $49 = 0, $50 = 0, $53 = 0, $54 = 0, $55 = 0, $58 = 0, $61 = 0, $78 = 0, $80 = 0, $82 = 0, $86 = 0, $9 = 0, $90 = 0, $96 = 0, $dpnt$077 = 0, $dpnt$1$lcssa = 0, $dpnt$166 = 0, $i$088 = 0, $i$182 = 0, $i$264 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$075 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$089 = 0, $pnt2$183 = 0, $pnt2$278 = 0, $pnt2$3$lcssa = 0, $pnt2$367 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$074 = 0, $wk_max$1$lcssa = 0, $wk_max$159 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$088 = 0;
  $pnt1$090 = $0;
  $pnt2$089 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$089 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$088 = $i$088 + 1 | 0;
   if (($i$088 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$089 = $pnt2$089 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$182 = 0;
  $pnt1$184 = $0;
  $pnt2$183 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$183 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$182 = $i$182 + 1 | 0;
   if (($i$182 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$183 = $pnt2$183 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $25 = ($9 | 0) > 1;
  $dpnt$077 = (HEAP32[$labelInfo + 4 >> 2] | 0) + $17 | 0;
  $j$075 = 1;
  $pnt$079 = $image + $17 | 0;
  $pnt2$278 = $0 + ($17 << 1) | 0;
  $wk_max$074 = 0;
  L13 : while (1) {
   if ($25) {
    $dpnt$166 = $dpnt$077;
    $i$264 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$367 = $pnt2$278;
    $wk_max$159 = $wk_max$074;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$367 >> 1] = 0;
      HEAP8[$dpnt$166 >> 0] = 0;
      $wk_max$2 = $wk_max$159;
     } else {
      HEAP8[$dpnt$166 >> 0] = -1;
      $30 = HEAP16[$pnt2$367 + ($18 << 1) >> 1] | 0;
      if ($30 << 16 >> 16 > 0) {
       HEAP16[$pnt2$367 >> 1] = $30;
       $33 = ($30 << 16 >> 16) * 7 | 0;
       $35 = $labelInfo + 1310736 + ($33 + -7 << 2) | 0;
       HEAP32[$35 >> 2] = (HEAP32[$35 >> 2] | 0) + 1;
       $39 = $labelInfo + 1310736 + ($33 + -6 << 2) | 0;
       HEAP32[$39 >> 2] = (HEAP32[$39 >> 2] | 0) + $i$264;
       $43 = $labelInfo + 1310736 + ($33 + -5 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($33 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $49 = HEAP16[$pnt2$367 + ($$sum << 1) >> 1] | 0;
      $50 = $49 << 16 >> 16;
      $53 = HEAP16[$pnt2$367 + ($$sum1 << 1) >> 1] | 0;
      $54 = $53 << 16 >> 16;
      $55 = $53 << 16 >> 16 > 0;
      if ($49 << 16 >> 16 <= 0) {
       if ($55) {
        HEAP16[$pnt2$367 >> 1] = $53;
        $155 = $54 * 7 | 0;
        $157 = $labelInfo + 1310736 + ($155 + -7 << 2) | 0;
        HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + 1;
        $161 = $labelInfo + 1310736 + ($155 + -6 << 2) | 0;
        HEAP32[$161 >> 2] = (HEAP32[$161 >> 2] | 0) + $i$264;
        $165 = $labelInfo + 1310736 + ($155 + -5 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + $j$075;
        $169 = $labelInfo + 1310736 + ($155 + -3 << 2) | 0;
        if ((HEAP32[$169 >> 2] | 0) < ($i$264 | 0)) HEAP32[$169 >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($155 + -1 << 2) >> 2] = $j$075;
        $wk_max$2 = $wk_max$159;
        break;
       }
       $175 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
       if ($175 << 16 >> 16 > 0) {
        HEAP16[$pnt2$367 >> 1] = $175;
        $178 = ($175 << 16 >> 16) * 7 | 0;
        $180 = $labelInfo + 1310736 + ($178 + -7 << 2) | 0;
        HEAP32[$180 >> 2] = (HEAP32[$180 >> 2] | 0) + 1;
        $184 = $labelInfo + 1310736 + ($178 + -6 << 2) | 0;
        HEAP32[$184 >> 2] = (HEAP32[$184 >> 2] | 0) + $i$264;
        $188 = $labelInfo + 1310736 + ($178 + -5 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + $j$075;
        $192 = $labelInfo + 1310736 + ($178 + -3 << 2) | 0;
        if ((HEAP32[$192 >> 2] | 0) >= ($i$264 | 0)) {
         $wk_max$2 = $wk_max$159;
         break;
        }
        HEAP32[$192 >> 2] = $i$264;
        $wk_max$2 = $wk_max$159;
        break;
       } else {
        $195 = $wk_max$159 + 1 | 0;
        if (($wk_max$159 | 0) > 32767) break L13;
        HEAP16[$pnt2$367 >> 1] = $195;
        HEAP32[$labelInfo + 1179664 + ($wk_max$159 << 2) >> 2] = $195 << 16 >> 16;
        $200 = $wk_max$159 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($200 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($200 + 1 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 2 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($200 + 3 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 4 << 2) >> 2] = $i$264;
        HEAP32[$labelInfo + 1310736 + ($200 + 5 << 2) >> 2] = $j$075;
        HEAP32[$labelInfo + 1310736 + ($200 + 6 << 2) >> 2] = $j$075;
        $wk_max$2 = $195;
        break;
       }
      }
      if ($55) {
       $58 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;
       $61 = HEAP32[$labelInfo + 1179664 + ($54 + -1 << 2) >> 2] | 0;
       if (($58 | 0) > ($61 | 0)) {
        HEAP16[$pnt2$367 >> 1] = $61;
        if (($wk_max$159 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$056 >> 2] = $61;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$159 | 0)) {
           $78 = $61;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $78 = $61;
       } else {
        HEAP16[$pnt2$367 >> 1] = $58;
        if (($58 | 0) < ($61 | 0) & ($wk_max$159 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$153 >> 2] = $58;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$159 | 0)) {
           $78 = $58;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $78 = $58;
       }
       $80 = ($78 << 16 >> 16) * 7 | 0;
       $82 = $labelInfo + 1310736 + ($80 + -7 << 2) | 0;
       HEAP32[$82 >> 2] = (HEAP32[$82 >> 2] | 0) + 1;
       $86 = $labelInfo + 1310736 + ($80 + -6 << 2) | 0;
       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + $i$264;
       $90 = $labelInfo + 1310736 + ($80 + -5 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + $j$075;
       HEAP32[$labelInfo + 1310736 + ($80 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $96 = HEAP16[$pnt2$367 + -2 >> 1] | 0;
      if ($96 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$367 >> 1] = $49;
       $136 = $50 * 7 | 0;
       $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
       HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
       $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
       HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$264;
       $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$075;
       $150 = $labelInfo + 1310736 + ($136 + -4 << 2) | 0;
       if ((HEAP32[$150 >> 2] | 0) > ($i$264 | 0)) HEAP32[$150 >> 2] = $i$264;
       HEAP32[$labelInfo + 1310736 + ($136 + -1 << 2) >> 2] = $j$075;
       $wk_max$2 = $wk_max$159;
       break;
      }
      $101 = HEAP32[$labelInfo + 1179664 + ($50 + -1 << 2) >> 2] | 0;
      $104 = HEAP32[$labelInfo + 1179664 + (($96 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($101 | 0) > ($104 | 0)) {
       HEAP16[$pnt2$367 >> 1] = $104;
       if (($wk_max$159 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$249 >> 2] = $104;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$159 | 0)) {
          $121 = $104;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $121 = $104;
      } else {
       HEAP16[$pnt2$367 >> 1] = $101;
       if (($101 | 0) < ($104 | 0) & ($wk_max$159 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$346 >> 2] = $101;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$159 | 0)) {
          $121 = $101;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $121 = $101;
      }
      $123 = ($121 << 16 >> 16) * 7 | 0;
      $125 = $labelInfo + 1310736 + ($123 + -7 << 2) | 0;
      HEAP32[$125 >> 2] = (HEAP32[$125 >> 2] | 0) + 1;
      $129 = $labelInfo + 1310736 + ($123 + -6 << 2) | 0;
      HEAP32[$129 >> 2] = (HEAP32[$129 >> 2] | 0) + $i$264;
      $133 = $labelInfo + 1310736 + ($123 + -5 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + $j$075;
      $wk_max$2 = $wk_max$159;
     } while (0);
     $i$264 = $i$264 + 1 | 0;
     $215 = $pnt$168 + 1 | 0;
     $216 = $pnt2$367 + 2 | 0;
     $217 = $dpnt$166 + 1 | 0;
     if (($i$264 | 0) >= ($9 | 0)) {
      $dpnt$1$lcssa = $217;
      $pnt$1$lcssa = $215;
      $pnt2$3$lcssa = $216;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $dpnt$166 = $217;
      $pnt$168 = $215;
      $pnt2$367 = $216;
      $wk_max$159 = $wk_max$2;
     }
    }
   } else {
    $dpnt$1$lcssa = $dpnt$077;
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$278;
    $wk_max$1$lcssa = $wk_max$074;
   }
   $j$075 = $j$075 + 1 | 0;
   if (($j$075 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $dpnt$077 = $dpnt$1$lcssa + 2 | 0;
    $pnt$079 = $pnt$1$lcssa + 2 | 0;
    $pnt2$278 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$074 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $224 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $226 = HEAP32[$wk$443 >> 2] | 0;
    if (($226 | 0) == ($i$341 | 0)) {
     $232 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $232;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $236 = $labelInfo + 8 | 0;
  $237 = $j$1$lcssa + -1 | 0;
  HEAP32[$236 >> 2] = $237;
  if (!$237) $$0 = 0; else {
   _memset($224 | 0, 0, $237 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $244 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$236 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $258 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $259 = $i$537 * 7 | 0;
     $262 = $labelInfo + 12 + ($258 << 2) | 0;
     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);
     $269 = $258 << 1;
     $270 = $labelInfo + 655376 + ($269 << 3) | 0;
     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);
     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;
     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);
     $281 = $258 << 2;
     $282 = $labelInfo + 131084 + ($281 << 2) | 0;
     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;
     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$236 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $311 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $314 = $i$636 << 1;
     $315 = $labelInfo + 655376 + ($314 << 3) | 0;
     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$236 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $image_thresh = $image_thresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$089 = 0;
  $pnt1$090 = $0;
  $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$088 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$088 = $pnt2$088 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$183 = 0;
  $pnt1$184 = $0;
  $pnt2$182 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$182 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$076 = 1;
  $pnt$079 = $image + $17 | 0;
  $pnt2$274 = $0 + ($17 << 1) | 0;
  $pnt_thresh$078 = $image_thresh + $17 | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($23) {
    $i$265 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$359 = $pnt2$274;
    $pnt_thresh$167 = $pnt_thresh$078;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) {
      $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0;
      if ($28 << 16 >> 16 > 0) {
       HEAP16[$pnt2$359 >> 1] = $28;
       $31 = ($28 << 16 >> 16) * 7 | 0;
       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;
       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;
       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265;
       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0;
      $48 = $47 << 16 >> 16;
      $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $53 = $51 << 16 >> 16 > 0;
      if ($47 << 16 >> 16 <= 0) {
       if ($53) {
        HEAP16[$pnt2$359 >> 1] = $51;
        $153 = $52 * 7 | 0;
        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265;
        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076;
        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;
        if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0;
       if ($173 << 16 >> 16 > 0) {
        HEAP16[$pnt2$359 >> 1] = $173;
        $176 = ($173 << 16 >> 16) * 7 | 0;
        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;
        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265;
        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076;
        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;
        if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$190 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $193 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$359 >> 1] = $193;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16;
        $198 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $193;
        break;
       }
      }
      if ($53) {
       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       if (($56 | 0) > ($59 | 0)) {
        HEAP16[$pnt2$359 >> 1] = $59;
        if (($wk_max$160 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$160 | 0)) {
           $76 = $59;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $76 = $59;
       } else {
        HEAP16[$pnt2$359 >> 1] = $56;
        if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$160 | 0)) {
           $76 = $56;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $76 = $56;
       }
       $78 = ($76 << 16 >> 16) * 7 | 0;
       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;
       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;
       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265;
       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0;
      if ($94 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$359 >> 1] = $47;
       $134 = $48 * 7 | 0;
       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265;
       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076;
       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;
       if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($99 | 0) > ($102 | 0)) {
       HEAP16[$pnt2$359 >> 1] = $102;
       if (($wk_max$160 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$160 | 0)) {
          $119 = $102;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $119 = $102;
      } else {
       HEAP16[$pnt2$359 >> 1] = $99;
       if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$160 | 0)) {
          $119 = $99;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $119 = $99;
      }
      $121 = ($119 << 16 >> 16) * 7 | 0;
      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;
      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;
      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265;
      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } else {
      HEAP16[$pnt2$359 >> 1] = 0;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $213 = $pnt$168 + 1 | 0;
     $214 = $pnt_thresh$167 + 1 | 0;
     $215 = $pnt2$359 + 2 | 0;
     if (($i$265 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $213;
      $pnt2$3$lcssa = $215;
      $pnt_thresh$1$lcssa = $214;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$168 = $213;
      $pnt2$359 = $215;
      $pnt_thresh$167 = $214;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$274;
    $pnt_thresh$1$lcssa = $pnt_thresh$078;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$079 = $pnt$1$lcssa + 2 | 0;
    $pnt2$274 = $pnt2$3$lcssa + 4 | 0;
    $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $222 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $224 = HEAP32[$wk$443 >> 2] | 0;
    if (($224 | 0) == ($i$341 | 0)) {
     $230 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $230;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $234 = $labelInfo + 8 | 0;
  $235 = $j$1$lcssa + -1 | 0;
  HEAP32[$234 >> 2] = $235;
  if (!$235) $$0 = 0; else {
   _memset($222 | 0, 0, $235 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $242 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $257 = $i$537 * 7 | 0;
     $260 = $labelInfo + 12 + ($256 << 2) | 0;
     HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0);
     $267 = $256 << 1;
     $268 = $labelInfo + 655376 + ($267 << 3) | 0;
     HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0);
     $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0);
     $279 = $256 << 2;
     $280 = $labelInfo + 131084 + ($279 << 2) | 0;
     $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284;
     $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$234 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $309 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $312 = $i$636 << 1;
     $313 = $labelInfo + 655376 + ($312 << 3) | 0;
     HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0);
     $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0;
     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBZ($image, $xsize, $ysize, $image_thresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $image_thresh = $image_thresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $224 = 0, $23 = 0, $230 = 0, $234 = 0, $235 = 0, $242 = 0, $256 = 0, $257 = 0, $260 = 0, $267 = 0, $268 = 0, $276 = 0, $279 = 0, $28 = 0, $280 = 0, $284 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $309 = 0, $31 = 0, $312 = 0, $313 = 0, $319 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$089 = 0, $i$183 = 0, $i$265 = 0, $i$341 = 0, $i$439 = 0, $i$537 = 0, $i$636 = 0, $j$076 = 0, $j$1$lcssa = 0, $j$142 = 0, $j$2 = 0, $k$055 = 0, $k$152 = 0, $k$248 = 0, $k$345 = 0, $pnt$079 = 0, $pnt$1$lcssa = 0, $pnt$168 = 0, $pnt1$090 = 0, $pnt1$184 = 0, $pnt2$088 = 0, $pnt2$182 = 0, $pnt2$274 = 0, $pnt2$3$lcssa = 0, $pnt2$359 = 0, $pnt_thresh$078 = 0, $pnt_thresh$1$lcssa = 0, $pnt_thresh$167 = 0, $vararg_buffer = 0, $wk$056 = 0, $wk$153 = 0, $wk$249 = 0, $wk$346 = 0, $wk$443 = 0, $wk_max$0$lcssa = 0, $wk_max$075 = 0, $wk_max$1$lcssa = 0, $wk_max$160 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$089 = 0;
  $pnt1$090 = $0;
  $pnt2$088 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$088 >> 1] = 0;
   HEAP16[$pnt1$090 >> 1] = 0;
   $i$089 = $i$089 + 1 | 0;
   if (($i$089 | 0) >= ($xsize | 0)) break; else {
    $pnt1$090 = $pnt1$090 + 2 | 0;
    $pnt2$088 = $pnt2$088 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$183 = 0;
  $pnt1$184 = $0;
  $pnt2$182 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$182 >> 1] = 0;
   HEAP16[$pnt1$184 >> 1] = 0;
   $i$183 = $i$183 + 1 | 0;
   if (($i$183 | 0) >= ($ysize | 0)) break; else {
    $pnt1$184 = $pnt1$184 + ($xsize << 1) | 0;
    $pnt2$182 = $pnt2$182 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$076 = 1;
  $pnt$079 = $image + $17 | 0;
  $pnt2$274 = $0 + ($17 << 1) | 0;
  $pnt_thresh$078 = $image_thresh + $17 | 0;
  $wk_max$075 = 0;
  L13 : while (1) {
   if ($23) {
    $i$265 = 1;
    $pnt$168 = $pnt$079;
    $pnt2$359 = $pnt2$274;
    $pnt_thresh$167 = $pnt_thresh$078;
    $wk_max$160 = $wk_max$075;
    while (1) {
     do if ((HEAPU8[$pnt$168 >> 0] | 0) > (HEAPU8[$pnt_thresh$167 >> 0] | 0)) {
      HEAP16[$pnt2$359 >> 1] = 0;
      $wk_max$2 = $wk_max$160;
     } else {
      $28 = HEAP16[$pnt2$359 + ($18 << 1) >> 1] | 0;
      if ($28 << 16 >> 16 > 0) {
       HEAP16[$pnt2$359 >> 1] = $28;
       $31 = ($28 << 16 >> 16) * 7 | 0;
       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;
       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;
       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$265;
       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $47 = HEAP16[$pnt2$359 + ($$sum << 1) >> 1] | 0;
      $48 = $47 << 16 >> 16;
      $51 = HEAP16[$pnt2$359 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $53 = $51 << 16 >> 16 > 0;
      if ($47 << 16 >> 16 <= 0) {
       if ($53) {
        HEAP16[$pnt2$359 >> 1] = $51;
        $153 = $52 * 7 | 0;
        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$265;
        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$076;
        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;
        if ((HEAP32[$167 >> 2] | 0) < ($i$265 | 0)) HEAP32[$167 >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$076;
        $wk_max$2 = $wk_max$160;
        break;
       }
       $173 = HEAP16[$pnt2$359 + -2 >> 1] | 0;
       if ($173 << 16 >> 16 > 0) {
        HEAP16[$pnt2$359 >> 1] = $173;
        $176 = ($173 << 16 >> 16) * 7 | 0;
        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;
        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$265;
        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$076;
        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;
        if ((HEAP32[$190 >> 2] | 0) >= ($i$265 | 0)) {
         $wk_max$2 = $wk_max$160;
         break;
        }
        HEAP32[$190 >> 2] = $i$265;
        $wk_max$2 = $wk_max$160;
        break;
       } else {
        $193 = $wk_max$160 + 1 | 0;
        if (($wk_max$160 | 0) > 32767) break L13;
        HEAP16[$pnt2$359 >> 1] = $193;
        HEAP32[$labelInfo + 1179664 + ($wk_max$160 << 2) >> 2] = $193 << 16 >> 16;
        $198 = $wk_max$160 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$265;
        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$076;
        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$076;
        $wk_max$2 = $193;
        break;
       }
      }
      if ($53) {
       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       if (($56 | 0) > ($59 | 0)) {
        HEAP16[$pnt2$359 >> 1] = $59;
        if (($wk_max$160 | 0) > 0) {
         $k$055 = 0;
         $wk$056 = $16;
         while (1) {
          if ((HEAP32[$wk$056 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$056 >> 2] = $59;
          $k$055 = $k$055 + 1 | 0;
          if (($k$055 | 0) >= ($wk_max$160 | 0)) {
           $76 = $59;
           break;
          } else $wk$056 = $wk$056 + 4 | 0;
         }
        } else $76 = $59;
       } else {
        HEAP16[$pnt2$359 >> 1] = $56;
        if (($56 | 0) < ($59 | 0) & ($wk_max$160 | 0) > 0) {
         $k$152 = 0;
         $wk$153 = $16;
         while (1) {
          if ((HEAP32[$wk$153 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$153 >> 2] = $56;
          $k$152 = $k$152 + 1 | 0;
          if (($k$152 | 0) >= ($wk_max$160 | 0)) {
           $76 = $56;
           break;
          } else $wk$153 = $wk$153 + 4 | 0;
         }
        } else $76 = $56;
       }
       $78 = ($76 << 16 >> 16) * 7 | 0;
       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;
       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;
       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$265;
       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$076;
       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $94 = HEAP16[$pnt2$359 + -2 >> 1] | 0;
      if ($94 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$359 >> 1] = $47;
       $134 = $48 * 7 | 0;
       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$265;
       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$076;
       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;
       if ((HEAP32[$148 >> 2] | 0) > ($i$265 | 0)) HEAP32[$148 >> 2] = $i$265;
       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$076;
       $wk_max$2 = $wk_max$160;
       break;
      }
      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($99 | 0) > ($102 | 0)) {
       HEAP16[$pnt2$359 >> 1] = $102;
       if (($wk_max$160 | 0) > 0) {
        $k$248 = 0;
        $wk$249 = $16;
        while (1) {
         if ((HEAP32[$wk$249 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$249 >> 2] = $102;
         $k$248 = $k$248 + 1 | 0;
         if (($k$248 | 0) >= ($wk_max$160 | 0)) {
          $119 = $102;
          break;
         } else $wk$249 = $wk$249 + 4 | 0;
        }
       } else $119 = $102;
      } else {
       HEAP16[$pnt2$359 >> 1] = $99;
       if (($99 | 0) < ($102 | 0) & ($wk_max$160 | 0) > 0) {
        $k$345 = 0;
        $wk$346 = $16;
        while (1) {
         if ((HEAP32[$wk$346 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$346 >> 2] = $99;
         $k$345 = $k$345 + 1 | 0;
         if (($k$345 | 0) >= ($wk_max$160 | 0)) {
          $119 = $99;
          break;
         } else $wk$346 = $wk$346 + 4 | 0;
        }
       } else $119 = $99;
      }
      $121 = ($119 << 16 >> 16) * 7 | 0;
      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;
      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;
      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$265;
      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$076;
      $wk_max$2 = $wk_max$160;
     } while (0);
     $i$265 = $i$265 + 1 | 0;
     $213 = $pnt$168 + 1 | 0;
     $214 = $pnt_thresh$167 + 1 | 0;
     $215 = $pnt2$359 + 2 | 0;
     if (($i$265 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $213;
      $pnt2$3$lcssa = $215;
      $pnt_thresh$1$lcssa = $214;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$168 = $213;
      $pnt2$359 = $215;
      $pnt_thresh$167 = $214;
      $wk_max$160 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$079;
    $pnt2$3$lcssa = $pnt2$274;
    $pnt_thresh$1$lcssa = $pnt_thresh$078;
    $wk_max$1$lcssa = $wk_max$075;
   }
   $j$076 = $j$076 + 1 | 0;
   if (($j$076 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$079 = $pnt$1$lcssa + 2 | 0;
    $pnt2$274 = $pnt2$3$lcssa + 4 | 0;
    $pnt_thresh$078 = $pnt_thresh$1$lcssa + 2 | 0;
    $wk_max$075 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $222 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$341 = 1;
   $j$142 = 1;
   $wk$443 = $16;
   while (1) {
    $224 = HEAP32[$wk$443 >> 2] | 0;
    if (($224 | 0) == ($i$341 | 0)) {
     $230 = $j$142;
     $j$2 = $j$142 + 1 | 0;
    } else {
     $230 = HEAP32[$labelInfo + 1179664 + ($224 + -1 << 2) >> 2] | 0;
     $j$2 = $j$142;
    }
    HEAP32[$wk$443 >> 2] = $230;
    if (($i$341 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$341 = $i$341 + 1 | 0;
     $j$142 = $j$2;
     $wk$443 = $wk$443 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $234 = $labelInfo + 8 | 0;
  $235 = $j$1$lcssa + -1 | 0;
  HEAP32[$234 >> 2] = $235;
  if (!$235) $$0 = 0; else {
   _memset($222 | 0, 0, $235 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $235 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$439 = 0;
    do {
     $242 = $i$439 << 2;
     HEAP32[$labelInfo + 131084 + ($242 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($242 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($242 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($242 | 3) << 2) >> 2] = 0;
     $i$439 = $i$439 + 1 | 0;
    } while (($i$439 | 0) < (HEAP32[$234 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$537 = 0;
    do {
     $256 = (HEAP32[$labelInfo + 1179664 + ($i$537 << 2) >> 2] | 0) + -1 | 0;
     $257 = $i$537 * 7 | 0;
     $260 = $labelInfo + 12 + ($256 << 2) | 0;
     HEAP32[$260 >> 2] = (HEAP32[$260 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($257 << 2) >> 2] | 0);
     $267 = $256 << 1;
     $268 = $labelInfo + 655376 + ($267 << 3) | 0;
     HEAPF64[$268 >> 3] = +HEAPF64[$268 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 1 << 2) >> 2] | 0);
     $276 = $labelInfo + 655376 + (($267 | 1) << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($257 + 2 << 2) >> 2] | 0);
     $279 = $256 << 2;
     $280 = $labelInfo + 131084 + ($279 << 2) | 0;
     $284 = HEAP32[$labelInfo + 1310736 + ($257 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$280 >> 2] | 0) > ($284 | 0)) HEAP32[$280 >> 2] = $284;
     $287 = $labelInfo + 131084 + (($279 | 1) << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($257 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) < ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($279 | 2) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($257 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) > ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($279 | 3) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($257 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) < ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $i$537 = $i$537 + 1 | 0;
    } while (($i$537 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$234 >> 2] | 0) > 0) {
    $i$636 = 0;
    do {
     $309 = $labelInfo + 12 + ($i$636 << 2) | 0;
     $312 = $i$636 << 1;
     $313 = $labelInfo + 655376 + ($312 << 3) | 0;
     HEAPF64[$313 >> 3] = +HEAPF64[$313 >> 3] / +(HEAP32[$309 >> 2] | 0);
     $319 = $labelInfo + 655376 + (($312 | 1) << 3) | 0;
     HEAPF64[$319 >> 3] = +HEAPF64[$319 >> 3] / +(HEAP32[$309 >> 2] | 0);
     $i$636 = $i$636 + 1 | 0;
    } while (($i$636 | 0) < (HEAP32[$234 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;
     do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) {
      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($47 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $47;
       $50 = ($47 << 16 >> 16) * 7 | 0;
       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;
       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;
       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;
       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $71 = $70 << 16 >> 16;
      $72 = $70 << 16 >> 16 > 0;
      if ($66 << 16 >> 16 <= 0) {
       if ($72) {
        HEAP16[$pnt2$363 >> 1] = $70;
        $172 = $71 * 7 | 0;
        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;
        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;
        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;
        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;
        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($192 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $192;
        $195 = ($192 << 16 >> 16) * 7 | 0;
        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;
        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;
        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;
        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;
        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;
        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$209 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $212 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $212;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;
        $217 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $212;
        break;
       }
      }
      if ($72) {
       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;
       if (($75 | 0) > ($78 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $78;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $95 = $78;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $95 = $78;
       } else {
        HEAP16[$pnt2$363 >> 1] = $75;
        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $95 = $75;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $95 = $75;
       }
       $97 = ($95 << 16 >> 16) * 7 | 0;
       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;
       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;
       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;
       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($113 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $66;
       $153 = $67 * 7 | 0;
       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;
       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;
       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;
       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($118 | 0) > ($121 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $121;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $138 = $121;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $138 = $121;
      } else {
       HEAP16[$pnt2$363 >> 1] = $118;
       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $138 = $118;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $138 = $118;
      }
      $140 = ($138 << 16 >> 16) * 7 | 0;
      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;
      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $232 = $pnt$164 + 4 | 0;
     $233 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $232;
      $pnt2$3$lcssa = $233;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $232;
      $pnt2$363 = $233;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $241 = HEAP32[$wk$440 >> 2] | 0;
    if (($241 | 0) == ($i$338 | 0)) {
     $247 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $247;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $259 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$534 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $329 = $i$633 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBI3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;
     do if ((($30 & 248) + 12 + ($30 << 5 & 224) + ($36 >>> 3 & 24) + ($36 << 2 & 248) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($47 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $47;
       $50 = ($47 << 16 >> 16) * 7 | 0;
       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;
       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;
       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;
       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $71 = $70 << 16 >> 16;
      $72 = $70 << 16 >> 16 > 0;
      if ($66 << 16 >> 16 <= 0) {
       if ($72) {
        HEAP16[$pnt2$363 >> 1] = $70;
        $172 = $71 * 7 | 0;
        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;
        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;
        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;
        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;
        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($192 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $192;
        $195 = ($192 << 16 >> 16) * 7 | 0;
        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;
        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;
        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;
        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;
        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;
        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$209 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $212 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $212;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;
        $217 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $212;
        break;
       }
      }
      if ($72) {
       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;
       if (($75 | 0) > ($78 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $78;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $95 = $78;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $95 = $78;
       } else {
        HEAP16[$pnt2$363 >> 1] = $75;
        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $95 = $75;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $95 = $75;
       }
       $97 = ($95 << 16 >> 16) * 7 | 0;
       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;
       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;
       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;
       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($113 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $66;
       $153 = $67 * 7 | 0;
       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;
       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;
       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;
       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($118 | 0) > ($121 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $121;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $138 = $121;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $138 = $121;
      } else {
       HEAP16[$pnt2$363 >> 1] = $118;
       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $138 = $118;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $138 = $118;
      }
      $140 = ($138 << 16 >> 16) * 7 | 0;
      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;
      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $232 = $pnt$164 + 4 | 0;
     $233 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $232;
      $pnt2$3$lcssa = $233;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $232;
      $pnt2$363 = $233;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $241 = HEAP32[$wk$440 >> 2] | 0;
    if (($241 | 0) == ($i$338 | 0)) {
     $247 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $247;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $259 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$534 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $329 = $i$633 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;
     do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) {
      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($47 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $47;
       $50 = ($47 << 16 >> 16) * 7 | 0;
       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;
       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;
       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;
       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $71 = $70 << 16 >> 16;
      $72 = $70 << 16 >> 16 > 0;
      if ($66 << 16 >> 16 <= 0) {
       if ($72) {
        HEAP16[$pnt2$363 >> 1] = $70;
        $172 = $71 * 7 | 0;
        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;
        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;
        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;
        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;
        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($192 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $192;
        $195 = ($192 << 16 >> 16) * 7 | 0;
        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;
        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;
        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;
        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;
        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;
        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$209 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $212 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $212;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;
        $217 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $212;
        break;
       }
      }
      if ($72) {
       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;
       if (($75 | 0) > ($78 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $78;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $95 = $78;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $95 = $78;
       } else {
        HEAP16[$pnt2$363 >> 1] = $75;
        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $95 = $75;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $95 = $75;
       }
       $97 = ($95 << 16 >> 16) * 7 | 0;
       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;
       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;
       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;
       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($113 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $66;
       $153 = $67 * 7 | 0;
       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;
       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;
       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;
       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($118 | 0) > ($121 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $121;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $138 = $121;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $138 = $121;
      } else {
       HEAP16[$pnt2$363 >> 1] = $118;
       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $138 = $118;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $138 = $118;
      }
      $140 = ($138 << 16 >> 16) * 7 | 0;
      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;
      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $232 = $pnt$164 + 4 | 0;
     $233 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $232;
      $pnt2$3$lcssa = $233;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $232;
      $pnt2$363 = $233;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $241 = HEAP32[$wk$440 >> 2] | 0;
    if (($241 | 0) == ($i$338 | 0)) {
     $247 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $247;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $259 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$534 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $329 = $i$633 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBI3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $107 = 0, $11 = 0, $113 = 0, $118 = 0, $12 = 0, $121 = 0, $138 = 0, $140 = 0, $142 = 0, $146 = 0, $150 = 0, $153 = 0, $155 = 0, $159 = 0, $163 = 0, $167 = 0, $172 = 0, $174 = 0, $178 = 0, $182 = 0, $186 = 0, $19 = 0, $192 = 0, $195 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $209 = 0, $21 = 0, $212 = 0, $217 = 0, $232 = 0, $233 = 0, $239 = 0, $241 = 0, $247 = 0, $251 = 0, $252 = 0, $259 = 0, $273 = 0, $274 = 0, $277 = 0, $28 = 0, $284 = 0, $285 = 0, $293 = 0, $296 = 0, $297 = 0, $3 = 0, $30 = 0, $301 = 0, $304 = 0, $308 = 0, $311 = 0, $315 = 0, $318 = 0, $322 = 0, $326 = 0, $329 = 0, $330 = 0, $336 = 0, $36 = 0, $47 = 0, $50 = 0, $52 = 0, $56 = 0, $60 = 0, $66 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $75 = 0, $78 = 0, $95 = 0, $97 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     $36 = HEAPU8[$pnt$164 + 1 >> 0] | 0;
     do if ((($30 & 248) + 10 + ($30 << 5 & 224) + ($36 >>> 3 & 28) + ($36 << 3 & 248) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $47 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($47 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $47;
       $50 = ($47 << 16 >> 16) * 7 | 0;
       $52 = $labelInfo + 1310736 + ($50 + -7 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + 1;
       $56 = $labelInfo + 1310736 + ($50 + -6 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $i$256;
       $60 = $labelInfo + 1310736 + ($50 + -5 << 2) | 0;
       HEAP32[$60 >> 2] = (HEAP32[$60 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($50 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $66 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $70 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $71 = $70 << 16 >> 16;
      $72 = $70 << 16 >> 16 > 0;
      if ($66 << 16 >> 16 <= 0) {
       if ($72) {
        HEAP16[$pnt2$363 >> 1] = $70;
        $172 = $71 * 7 | 0;
        $174 = $labelInfo + 1310736 + ($172 + -7 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + 1;
        $178 = $labelInfo + 1310736 + ($172 + -6 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $i$256;
        $182 = $labelInfo + 1310736 + ($172 + -5 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $j$069;
        $186 = $labelInfo + 1310736 + ($172 + -3 << 2) | 0;
        if ((HEAP32[$186 >> 2] | 0) < ($i$256 | 0)) HEAP32[$186 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($172 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $192 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($192 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $192;
        $195 = ($192 << 16 >> 16) * 7 | 0;
        $197 = $labelInfo + 1310736 + ($195 + -7 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + 1;
        $201 = $labelInfo + 1310736 + ($195 + -6 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $i$256;
        $205 = $labelInfo + 1310736 + ($195 + -5 << 2) | 0;
        HEAP32[$205 >> 2] = (HEAP32[$205 >> 2] | 0) + $j$069;
        $209 = $labelInfo + 1310736 + ($195 + -3 << 2) | 0;
        if ((HEAP32[$209 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$209 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $212 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $212;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $212 << 16 >> 16;
        $217 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($217 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($217 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($217 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($217 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $212;
        break;
       }
      }
      if ($72) {
       $75 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       $78 = HEAP32[$labelInfo + 1179664 + ($71 + -1 << 2) >> 2] | 0;
       if (($75 | 0) > ($78 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $78;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($75 | 0)) HEAP32[$wk$053 >> 2] = $78;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $95 = $78;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $95 = $78;
       } else {
        HEAP16[$pnt2$363 >> 1] = $75;
        if (($75 | 0) < ($78 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($78 | 0)) HEAP32[$wk$150 >> 2] = $75;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $95 = $75;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $95 = $75;
       }
       $97 = ($95 << 16 >> 16) * 7 | 0;
       $99 = $labelInfo + 1310736 + ($97 + -7 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 1;
       $103 = $labelInfo + 1310736 + ($97 + -6 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $i$256;
       $107 = $labelInfo + 1310736 + ($97 + -5 << 2) | 0;
       HEAP32[$107 >> 2] = (HEAP32[$107 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($97 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($113 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $66;
       $153 = $67 * 7 | 0;
       $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
       $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$256;
       $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
       HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$069;
       $167 = $labelInfo + 1310736 + ($153 + -4 << 2) | 0;
       if ((HEAP32[$167 >> 2] | 0) > ($i$256 | 0)) HEAP32[$167 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $118 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
      $121 = HEAP32[$labelInfo + 1179664 + (($113 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($118 | 0) > ($121 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $121;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($118 | 0)) HEAP32[$wk$246 >> 2] = $121;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $138 = $121;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $138 = $121;
      } else {
       HEAP16[$pnt2$363 >> 1] = $118;
       if (($118 | 0) < ($121 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($121 | 0)) HEAP32[$wk$343 >> 2] = $118;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $138 = $118;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $138 = $118;
      }
      $140 = ($138 << 16 >> 16) * 7 | 0;
      $142 = $labelInfo + 1310736 + ($140 + -7 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + 1;
      $146 = $labelInfo + 1310736 + ($140 + -6 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $i$256;
      $150 = $labelInfo + 1310736 + ($140 + -5 << 2) | 0;
      HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $232 = $pnt$164 + 4 | 0;
     $233 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $232;
      $pnt2$3$lcssa = $233;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $232;
      $pnt2$363 = $233;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $239 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $241 = HEAP32[$wk$440 >> 2] | 0;
    if (($241 | 0) == ($i$338 | 0)) {
     $247 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $247 = HEAP32[$labelInfo + 1179664 + ($241 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $247;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $251 = $labelInfo + 8 | 0;
  $252 = $j$1$lcssa + -1 | 0;
  HEAP32[$251 >> 2] = $252;
  if (!$252) $$0 = 0; else {
   _memset($239 | 0, 0, $252 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $252 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $259 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($259 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($259 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($259 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($259 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$251 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $273 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $274 = $i$534 * 7 | 0;
     $277 = $labelInfo + 12 + ($273 << 2) | 0;
     HEAP32[$277 >> 2] = (HEAP32[$277 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($274 << 2) >> 2] | 0);
     $284 = $273 << 1;
     $285 = $labelInfo + 655376 + ($284 << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 1 << 2) >> 2] | 0);
     $293 = $labelInfo + 655376 + (($284 | 1) << 3) | 0;
     HEAPF64[$293 >> 3] = +HEAPF64[$293 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($274 + 2 << 2) >> 2] | 0);
     $296 = $273 << 2;
     $297 = $labelInfo + 131084 + ($296 << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($274 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($296 | 1) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($274 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $311 = $labelInfo + 131084 + (($296 | 2) << 2) | 0;
     $315 = HEAP32[$labelInfo + 1310736 + ($274 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$311 >> 2] | 0) > ($315 | 0)) HEAP32[$311 >> 2] = $315;
     $318 = $labelInfo + 131084 + (($296 | 3) << 2) | 0;
     $322 = HEAP32[$labelInfo + 1310736 + ($274 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$318 >> 2] | 0) < ($322 | 0)) HEAP32[$318 >> 2] = $322;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$251 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $326 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $329 = $i$633 << 1;
     $330 = $labelInfo + 655376 + ($329 << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $336 = $labelInfo + 655376 + (($329 | 1) << 3) | 0;
     HEAPF64[$336 >> 3] = +HEAPF64[$336 >> 3] / +(HEAP32[$326 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$251 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$363 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$205 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $208 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $74;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $91 = $74;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$363 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $91 = $71;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $117;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $134 = $117;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$363 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $134 = $114;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $228 = $pnt$164 + 4 | 0;
     $229 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $228;
      $pnt2$363 = $229;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $237 = HEAP32[$wk$440 >> 2] | 0;
    if (($237 | 0) == ($i$338 | 0)) {
     $243 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $243;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $255 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$534 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $325 = $i$633 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}
function _arLabelingSubDWI3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $109 = 0, $11 = 0, $114 = 0, $117 = 0, $12 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $170 = 0, $174 = 0, $178 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $2 = 0, $201 = 0, $205 = 0, $208 = 0, $21 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $269 = 0, $270 = 0, $273 = 0, $28 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $3 = 0, $30 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $21 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     $30 = HEAPU8[$pnt$164 >> 0] | 0;
     do if ((($30 & 240) + 24 + ($30 << 4 & 240) + ((HEAPU8[$pnt$164 + 1 >> 0] | 0) & 240) | 0) > ($11 | 0)) {
      $43 = HEAP16[$pnt2$363 + ($21 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$256;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $62 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$363 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$256;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$069;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$256 | 0)) HEAP32[$182 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $188 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$256;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$069;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$205 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $208 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $74;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$053 >> 2] = $74;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $91 = $74;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$363 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$150 >> 2] = $71;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $91 = $71;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$256;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $109 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$256;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$069;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$256 | 0)) HEAP32[$163 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $117;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$246 >> 2] = $117;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $134 = $117;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$363 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$343 >> 2] = $114;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $134 = $114;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$256;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $228 = $pnt$164 + 4 | 0;
     $229 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $228;
      $pnt2$363 = $229;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $237 = HEAP32[$wk$440 >> 2] | 0;
    if (($237 | 0) == ($i$338 | 0)) {
     $243 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $243;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $255 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$534 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $325 = $i$633 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;
     do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) {
      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$362 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$205 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $208 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $74;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $91 = $74;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$362 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $91 = $71;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $117;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $134 = $117;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$362 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $134 = $114;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $228 = $pnt$163 + 2 | 0;
     $229 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $228;
      $pnt2$362 = $229;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $237 = HEAP32[$wk$439 >> 2] | 0;
    if (($237 | 0) == ($i$337 | 0)) {
     $243 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $243;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $255 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$533 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $325 = $i$632 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBR3CA5551($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;
     do if ((($26 & 248) + 12 + ($26 << 5 & 224) + ($32 >>> 3 & 24) + ($32 << 2 & 248) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$362 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$205 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $208 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $74;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $91 = $74;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$362 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $91 = $71;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $117;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $134 = $117;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$362 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $134 = $114;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $228 = $pnt$163 + 2 | 0;
     $229 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $228;
      $pnt2$362 = $229;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $237 = HEAP32[$wk$439 >> 2] | 0;
    if (($237 | 0) == ($i$337 | 0)) {
     $243 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $243;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $255 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$533 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $325 = $i$632 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;
     do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) {
      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$362 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$205 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $208 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $74;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $91 = $74;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$362 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $91 = $71;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $117;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $134 = $117;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$362 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $134 = $114;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $228 = $pnt$163 + 2 | 0;
     $229 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $228;
      $pnt2$362 = $229;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $237 = HEAP32[$wk$439 >> 2] | 0;
    if (($237 | 0) == ($i$337 | 0)) {
     $243 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $243;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $255 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$533 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $325 = $i$632 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBR3C565($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $109 = 0, $114 = 0, $117 = 0, $134 = 0, $136 = 0, $138 = 0, $142 = 0, $146 = 0, $149 = 0, $151 = 0, $155 = 0, $159 = 0, $163 = 0, $168 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $182 = 0, $188 = 0, $19 = 0, $191 = 0, $193 = 0, $197 = 0, $201 = 0, $205 = 0, $208 = 0, $213 = 0, $228 = 0, $229 = 0, $235 = 0, $237 = 0, $24 = 0, $243 = 0, $247 = 0, $248 = 0, $255 = 0, $26 = 0, $269 = 0, $270 = 0, $273 = 0, $280 = 0, $281 = 0, $289 = 0, $292 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $307 = 0, $311 = 0, $314 = 0, $318 = 0, $32 = 0, $322 = 0, $325 = 0, $326 = 0, $332 = 0, $43 = 0, $46 = 0, $48 = 0, $52 = 0, $56 = 0, $62 = 0, $63 = 0, $66 = 0, $67 = 0, $68 = 0, $71 = 0, $74 = 0, $9 = 0, $91 = 0, $93 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     $32 = HEAPU8[$pnt$163 + 1 >> 0] | 0;
     do if ((($26 & 248) + 10 + ($26 << 5 & 224) + ($32 >>> 3 & 28) + ($32 << 3 & 248) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $43 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($43 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $43;
       $46 = ($43 << 16 >> 16) * 7 | 0;
       $48 = $labelInfo + 1310736 + ($46 + -7 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + 1;
       $52 = $labelInfo + 1310736 + ($46 + -6 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $i$255;
       $56 = $labelInfo + 1310736 + ($46 + -5 << 2) | 0;
       HEAP32[$56 >> 2] = (HEAP32[$56 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($46 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $62 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $66 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $67 = $66 << 16 >> 16;
      $68 = $66 << 16 >> 16 > 0;
      if ($62 << 16 >> 16 <= 0) {
       if ($68) {
        HEAP16[$pnt2$362 >> 1] = $66;
        $168 = $67 * 7 | 0;
        $170 = $labelInfo + 1310736 + ($168 + -7 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + 1;
        $174 = $labelInfo + 1310736 + ($168 + -6 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $i$255;
        $178 = $labelInfo + 1310736 + ($168 + -5 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + $j$068;
        $182 = $labelInfo + 1310736 + ($168 + -3 << 2) | 0;
        if ((HEAP32[$182 >> 2] | 0) < ($i$255 | 0)) HEAP32[$182 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($168 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $188 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($188 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $188;
        $191 = ($188 << 16 >> 16) * 7 | 0;
        $193 = $labelInfo + 1310736 + ($191 + -7 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + 1;
        $197 = $labelInfo + 1310736 + ($191 + -6 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $i$255;
        $201 = $labelInfo + 1310736 + ($191 + -5 << 2) | 0;
        HEAP32[$201 >> 2] = (HEAP32[$201 >> 2] | 0) + $j$068;
        $205 = $labelInfo + 1310736 + ($191 + -3 << 2) | 0;
        if ((HEAP32[$205 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$205 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $208 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $208;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $208 << 16 >> 16;
        $213 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($213 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($213 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($213 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($213 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $208;
        break;
       }
      }
      if ($68) {
       $71 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       $74 = HEAP32[$labelInfo + 1179664 + ($67 + -1 << 2) >> 2] | 0;
       if (($71 | 0) > ($74 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $74;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($71 | 0)) HEAP32[$wk$052 >> 2] = $74;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $91 = $74;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $91 = $74;
       } else {
        HEAP16[$pnt2$362 >> 1] = $71;
        if (($71 | 0) < ($74 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($74 | 0)) HEAP32[$wk$149 >> 2] = $71;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $91 = $71;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $91 = $71;
       }
       $93 = ($91 << 16 >> 16) * 7 | 0;
       $95 = $labelInfo + 1310736 + ($93 + -7 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + 1;
       $99 = $labelInfo + 1310736 + ($93 + -6 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $i$255;
       $103 = $labelInfo + 1310736 + ($93 + -5 << 2) | 0;
       HEAP32[$103 >> 2] = (HEAP32[$103 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($93 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($109 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $62;
       $149 = $63 * 7 | 0;
       $151 = $labelInfo + 1310736 + ($149 + -7 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + 1;
       $155 = $labelInfo + 1310736 + ($149 + -6 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $i$255;
       $159 = $labelInfo + 1310736 + ($149 + -5 << 2) | 0;
       HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $j$068;
       $163 = $labelInfo + 1310736 + ($149 + -4 << 2) | 0;
       if ((HEAP32[$163 >> 2] | 0) > ($i$255 | 0)) HEAP32[$163 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($149 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $114 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
      $117 = HEAP32[$labelInfo + 1179664 + (($109 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($114 | 0) > ($117 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $117;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($114 | 0)) HEAP32[$wk$245 >> 2] = $117;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $134 = $117;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $134 = $117;
      } else {
       HEAP16[$pnt2$362 >> 1] = $114;
       if (($114 | 0) < ($117 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($117 | 0)) HEAP32[$wk$342 >> 2] = $114;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $134 = $114;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $134 = $114;
      }
      $136 = ($134 << 16 >> 16) * 7 | 0;
      $138 = $labelInfo + 1310736 + ($136 + -7 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + 1;
      $142 = $labelInfo + 1310736 + ($136 + -6 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $i$255;
      $146 = $labelInfo + 1310736 + ($136 + -5 << 2) | 0;
      HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $228 = $pnt$163 + 2 | 0;
     $229 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $228;
      $pnt2$3$lcssa = $229;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $228;
      $pnt2$362 = $229;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $235 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $237 = HEAP32[$wk$439 >> 2] | 0;
    if (($237 | 0) == ($i$337 | 0)) {
     $243 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $243 = HEAP32[$labelInfo + 1179664 + ($237 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $243;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $247 = $labelInfo + 8 | 0;
  $248 = $j$1$lcssa + -1 | 0;
  HEAP32[$247 >> 2] = $248;
  if (!$248) $$0 = 0; else {
   _memset($235 | 0, 0, $248 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $248 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $255 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($255 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($255 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($255 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($255 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$247 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $269 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $270 = $i$533 * 7 | 0;
     $273 = $labelInfo + 12 + ($269 << 2) | 0;
     HEAP32[$273 >> 2] = (HEAP32[$273 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($270 << 2) >> 2] | 0);
     $280 = $269 << 1;
     $281 = $labelInfo + 655376 + ($280 << 3) | 0;
     HEAPF64[$281 >> 3] = +HEAPF64[$281 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 1 << 2) >> 2] | 0);
     $289 = $labelInfo + 655376 + (($280 | 1) << 3) | 0;
     HEAPF64[$289 >> 3] = +HEAPF64[$289 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($270 + 2 << 2) >> 2] | 0);
     $292 = $269 << 2;
     $293 = $labelInfo + 131084 + ($292 << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($270 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($292 | 1) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($270 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $307 = $labelInfo + 131084 + (($292 | 2) << 2) | 0;
     $311 = HEAP32[$labelInfo + 1310736 + ($270 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$307 >> 2] | 0) > ($311 | 0)) HEAP32[$307 >> 2] = $311;
     $314 = $labelInfo + 131084 + (($292 | 3) << 2) | 0;
     $318 = HEAP32[$labelInfo + 1310736 + ($270 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$314 >> 2] | 0) < ($318 | 0)) HEAP32[$314 >> 2] = $318;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$247 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $322 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $325 = $i$632 << 1;
     $326 = $labelInfo + 655376 + ($325 << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $332 = $labelInfo + 655376 + (($325 | 1) << 3) | 0;
     HEAPF64[$332 >> 3] = +HEAPF64[$332 >> 3] / +(HEAP32[$322 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$247 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize * 3 | 0) + 12 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$363 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$203 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $206 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $72;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $89 = $72;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$363 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $89 = $69;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $115;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $132 = $115;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$363 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $132 = $112;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $226 = $pnt$164 + 6 | 0;
     $227 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $226;
      $pnt2$363 = $227;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $233 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $235 = HEAP32[$wk$440 >> 2] | 0;
    if (($235 | 0) == ($i$338 | 0)) {
     $241 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $241;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $245 = $labelInfo + 8 | 0;
  $246 = $j$1$lcssa + -1 | 0;
  HEAP32[$245 >> 2] = $246;
  if (!$246) $$0 = 0; else {
   _memset($233 | 0, 0, $246 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $253 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $268 = $i$534 * 7 | 0;
     $271 = $labelInfo + 12 + ($267 << 2) | 0;
     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);
     $278 = $267 << 1;
     $279 = $labelInfo + 655376 + ($278 << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);
     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;
     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);
     $290 = $267 << 2;
     $291 = $labelInfo + 131084 + ($290 << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$245 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $323 = $i$633 << 1;
     $324 = $labelInfo + 655376 + ($323 << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBI3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize * 3 | 0) + 12 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize * 6 | 0) + 6) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$363 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$203 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $206 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $72;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $89 = $72;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$363 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $89 = $69;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $115;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $132 = $115;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$363 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $132 = $112;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $226 = $pnt$164 + 6 | 0;
     $227 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $226;
      $pnt2$363 = $227;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $233 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $235 = HEAP32[$wk$440 >> 2] | 0;
    if (($235 | 0) == ($i$338 | 0)) {
     $241 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $241;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $245 = $labelInfo + 8 | 0;
  $246 = $j$1$lcssa + -1 | 0;
  HEAP32[$245 >> 2] = $246;
  if (!$246) $$0 = 0; else {
   _memset($233 | 0, 0, $246 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $253 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $268 = $i$534 * 7 | 0;
     $271 = $labelInfo + 12 + ($267 << 2) | 0;
     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);
     $278 = $267 << 1;
     $279 = $labelInfo + 655376 + ($278 << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);
     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;
     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);
     $290 = $267 << 2;
     $291 = $labelInfo + 131084 + ($290 << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$245 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $323 = $i$633 << 1;
     $324 = $labelInfo + 655376 + ($323 << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) {
      $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($42 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $42;
       $45 = ($42 << 16 >> 16) * 7 | 0;
       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;
       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256;
       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $67 = $65 << 16 >> 16 > 0;
      if ($61 << 16 >> 16 <= 0) {
       if ($67) {
        HEAP16[$pnt2$363 >> 1] = $65;
        $167 = $66 * 7 | 0;
        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;
        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256;
        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069;
        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;
        if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($187 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $187;
        $190 = ($187 << 16 >> 16) * 7 | 0;
        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;
        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256;
        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069;
        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;
        if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$204 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $207 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $207;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16;
        $212 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $207;
        break;
       }
      }
      if ($67) {
       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       if (($70 | 0) > ($73 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $73;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $90 = $73;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $90 = $73;
       } else {
        HEAP16[$pnt2$363 >> 1] = $70;
        if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $90 = $70;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $90 = $70;
       }
       $92 = ($90 << 16 >> 16) * 7 | 0;
       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;
       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256;
       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($108 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $61;
       $148 = $62 * 7 | 0;
       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;
       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256;
       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069;
       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;
       if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($113 | 0) > ($116 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $116;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $133 = $116;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $133 = $116;
      } else {
       HEAP16[$pnt2$363 >> 1] = $113;
       if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $133 = $113;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $133 = $113;
      }
      $135 = ($133 << 16 >> 16) * 7 | 0;
      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256;
      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $227 = $pnt$164 + 8 | 0;
     $228 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $227;
      $pnt2$3$lcssa = $228;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $227;
      $pnt2$363 = $228;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $236 = HEAP32[$wk$440 >> 2] | 0;
    if (($236 | 0) == ($i$338 | 0)) {
     $242 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $242;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $254 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$534 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $324 = $i$633 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBIA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $108 = 0, $11 = 0, $113 = 0, $116 = 0, $12 = 0, $133 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $148 = 0, $150 = 0, $154 = 0, $158 = 0, $162 = 0, $167 = 0, $169 = 0, $173 = 0, $177 = 0, $181 = 0, $187 = 0, $19 = 0, $190 = 0, $192 = 0, $196 = 0, $2 = 0, $20 = 0, $200 = 0, $204 = 0, $207 = 0, $212 = 0, $227 = 0, $228 = 0, $234 = 0, $236 = 0, $242 = 0, $246 = 0, $247 = 0, $254 = 0, $268 = 0, $269 = 0, $272 = 0, $279 = 0, $28 = 0, $280 = 0, $288 = 0, $291 = 0, $292 = 0, $296 = 0, $299 = 0, $3 = 0, $303 = 0, $306 = 0, $310 = 0, $313 = 0, $317 = 0, $321 = 0, $324 = 0, $325 = 0, $331 = 0, $42 = 0, $45 = 0, $47 = 0, $51 = 0, $55 = 0, $61 = 0, $62 = 0, $65 = 0, $66 = 0, $67 = 0, $70 = 0, $73 = 0, $90 = 0, $92 = 0, $94 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 2 >> 0] | 0) + (HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 + 3 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $42 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($42 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $42;
       $45 = ($42 << 16 >> 16) * 7 | 0;
       $47 = $labelInfo + 1310736 + ($45 + -7 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + 1;
       $51 = $labelInfo + 1310736 + ($45 + -6 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $i$256;
       $55 = $labelInfo + 1310736 + ($45 + -5 << 2) | 0;
       HEAP32[$55 >> 2] = (HEAP32[$55 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($45 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $61 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $65 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $66 = $65 << 16 >> 16;
      $67 = $65 << 16 >> 16 > 0;
      if ($61 << 16 >> 16 <= 0) {
       if ($67) {
        HEAP16[$pnt2$363 >> 1] = $65;
        $167 = $66 * 7 | 0;
        $169 = $labelInfo + 1310736 + ($167 + -7 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + 1;
        $173 = $labelInfo + 1310736 + ($167 + -6 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $i$256;
        $177 = $labelInfo + 1310736 + ($167 + -5 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + $j$069;
        $181 = $labelInfo + 1310736 + ($167 + -3 << 2) | 0;
        if ((HEAP32[$181 >> 2] | 0) < ($i$256 | 0)) HEAP32[$181 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($167 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $187 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($187 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $187;
        $190 = ($187 << 16 >> 16) * 7 | 0;
        $192 = $labelInfo + 1310736 + ($190 + -7 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + 1;
        $196 = $labelInfo + 1310736 + ($190 + -6 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $i$256;
        $200 = $labelInfo + 1310736 + ($190 + -5 << 2) | 0;
        HEAP32[$200 >> 2] = (HEAP32[$200 >> 2] | 0) + $j$069;
        $204 = $labelInfo + 1310736 + ($190 + -3 << 2) | 0;
        if ((HEAP32[$204 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$204 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $207 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $207;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $207 << 16 >> 16;
        $212 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($212 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($212 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($212 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($212 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($212 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $207;
        break;
       }
      }
      if ($67) {
       $70 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       $73 = HEAP32[$labelInfo + 1179664 + ($66 + -1 << 2) >> 2] | 0;
       if (($70 | 0) > ($73 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $73;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$053 >> 2] = $73;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $90 = $73;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $90 = $73;
       } else {
        HEAP16[$pnt2$363 >> 1] = $70;
        if (($70 | 0) < ($73 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($73 | 0)) HEAP32[$wk$150 >> 2] = $70;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $90 = $70;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $90 = $70;
       }
       $92 = ($90 << 16 >> 16) * 7 | 0;
       $94 = $labelInfo + 1310736 + ($92 + -7 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + 1;
       $98 = $labelInfo + 1310736 + ($92 + -6 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $i$256;
       $102 = $labelInfo + 1310736 + ($92 + -5 << 2) | 0;
       HEAP32[$102 >> 2] = (HEAP32[$102 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($92 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $108 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($108 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $61;
       $148 = $62 * 7 | 0;
       $150 = $labelInfo + 1310736 + ($148 + -7 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + 1;
       $154 = $labelInfo + 1310736 + ($148 + -6 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $i$256;
       $158 = $labelInfo + 1310736 + ($148 + -5 << 2) | 0;
       HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $j$069;
       $162 = $labelInfo + 1310736 + ($148 + -4 << 2) | 0;
       if ((HEAP32[$162 >> 2] | 0) > ($i$256 | 0)) HEAP32[$162 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($148 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $113 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
      $116 = HEAP32[$labelInfo + 1179664 + (($108 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($113 | 0) > ($116 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $116;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$246 >> 2] = $116;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $133 = $116;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $133 = $116;
      } else {
       HEAP16[$pnt2$363 >> 1] = $113;
       if (($113 | 0) < ($116 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($116 | 0)) HEAP32[$wk$343 >> 2] = $113;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $133 = $113;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $133 = $113;
      }
      $135 = ($133 << 16 >> 16) * 7 | 0;
      $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
      $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$256;
      $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
      HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $227 = $pnt$164 + 8 | 0;
     $228 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $227;
      $pnt2$3$lcssa = $228;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $227;
      $pnt2$363 = $228;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $234 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $236 = HEAP32[$wk$440 >> 2] | 0;
    if (($236 | 0) == ($i$338 | 0)) {
     $242 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $242 = HEAP32[$labelInfo + 1179664 + ($236 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $242;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $246 = $labelInfo + 8 | 0;
  $247 = $j$1$lcssa + -1 | 0;
  HEAP32[$246 >> 2] = $247;
  if (!$247) $$0 = 0; else {
   _memset($234 | 0, 0, $247 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $247 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $254 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($254 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($254 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($254 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($254 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$246 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $268 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $269 = $i$534 * 7 | 0;
     $272 = $labelInfo + 12 + ($268 << 2) | 0;
     HEAP32[$272 >> 2] = (HEAP32[$272 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($269 << 2) >> 2] | 0);
     $279 = $268 << 1;
     $280 = $labelInfo + 655376 + ($279 << 3) | 0;
     HEAPF64[$280 >> 3] = +HEAPF64[$280 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 1 << 2) >> 2] | 0);
     $288 = $labelInfo + 655376 + (($279 | 1) << 3) | 0;
     HEAPF64[$288 >> 3] = +HEAPF64[$288 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($269 + 2 << 2) >> 2] | 0);
     $291 = $268 << 2;
     $292 = $labelInfo + 131084 + ($291 << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($269 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($291 | 1) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($269 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $306 = $labelInfo + 131084 + (($291 | 2) << 2) | 0;
     $310 = HEAP32[$labelInfo + 1310736 + ($269 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$306 >> 2] | 0) > ($310 | 0)) HEAP32[$306 >> 2] = $310;
     $313 = $labelInfo + 131084 + (($291 | 3) << 2) | 0;
     $317 = HEAP32[$labelInfo + 1310736 + ($269 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$313 >> 2] | 0) < ($317 | 0)) HEAP32[$313 >> 2] = $317;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$246 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $321 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $324 = $i$633 << 1;
     $325 = $labelInfo + 655376 + ($324 << 3) | 0;
     HEAPF64[$325 >> 3] = +HEAPF64[$325 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $331 = $labelInfo + 655376 + (($324 | 1) << 3) | 0;
     HEAPF64[$331 >> 3] = +HEAPF64[$331 >> 3] / +(HEAP32[$321 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$246 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$363 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$203 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $206 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $72;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $89 = $72;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$363 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $89 = $69;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $115;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $132 = $115;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$363 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $132 = $112;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $226 = $pnt$164 + 8 | 0;
     $227 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $226;
      $pnt2$363 = $227;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $233 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $235 = HEAP32[$wk$440 >> 2] | 0;
    if (($235 | 0) == ($i$338 | 0)) {
     $241 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $241;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $245 = $labelInfo + 8 | 0;
  $246 = $j$1$lcssa + -1 | 0;
  HEAP32[$245 >> 2] = $246;
  if (!$246) $$0 = 0; else {
   _memset($233 | 0, 0, $246 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $253 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $268 = $i$534 * 7 | 0;
     $271 = $labelInfo + 12 + ($267 << 2) | 0;
     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);
     $278 = $267 << 1;
     $279 = $labelInfo + 655376 + ($278 << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);
     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;
     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);
     $290 = $267 << 2;
     $291 = $labelInfo + 131084 + ($290 << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$245 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $323 = $i$633 << 1;
     $324 = $labelInfo + 655376 + ($323 << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBI3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $101 = 0, $107 = 0, $11 = 0, $112 = 0, $115 = 0, $12 = 0, $132 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $147 = 0, $149 = 0, $153 = 0, $157 = 0, $161 = 0, $166 = 0, $168 = 0, $172 = 0, $176 = 0, $180 = 0, $186 = 0, $189 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $2 = 0, $20 = 0, $203 = 0, $206 = 0, $211 = 0, $226 = 0, $227 = 0, $233 = 0, $235 = 0, $241 = 0, $245 = 0, $246 = 0, $253 = 0, $267 = 0, $268 = 0, $271 = 0, $278 = 0, $279 = 0, $28 = 0, $287 = 0, $290 = 0, $291 = 0, $295 = 0, $298 = 0, $3 = 0, $302 = 0, $305 = 0, $309 = 0, $312 = 0, $316 = 0, $320 = 0, $323 = 0, $324 = 0, $330 = 0, $41 = 0, $44 = 0, $46 = 0, $50 = 0, $54 = 0, $60 = 0, $61 = 0, $64 = 0, $65 = 0, $66 = 0, $69 = 0, $72 = 0, $89 = 0, $91 = 0, $93 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $labelingThresh * 3 | 0;
 $12 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($12 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $19 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 2) + 16 | 0;
 L11 : do if (($3 | 0) > 1) {
  $28 = ($12 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 3) + 8) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($28) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if (((HEAPU8[$pnt$164 + 1 >> 0] | 0) + (HEAPU8[$pnt$164 >> 0] | 0) + (HEAPU8[$pnt$164 + 2 >> 0] | 0) | 0) > ($11 | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $41 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($41 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $41;
       $44 = ($41 << 16 >> 16) * 7 | 0;
       $46 = $labelInfo + 1310736 + ($44 + -7 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + 1;
       $50 = $labelInfo + 1310736 + ($44 + -6 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $i$256;
       $54 = $labelInfo + 1310736 + ($44 + -5 << 2) | 0;
       HEAP32[$54 >> 2] = (HEAP32[$54 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($44 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $60 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $64 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $65 = $64 << 16 >> 16;
      $66 = $64 << 16 >> 16 > 0;
      if ($60 << 16 >> 16 <= 0) {
       if ($66) {
        HEAP16[$pnt2$363 >> 1] = $64;
        $166 = $65 * 7 | 0;
        $168 = $labelInfo + 1310736 + ($166 + -7 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + 1;
        $172 = $labelInfo + 1310736 + ($166 + -6 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $i$256;
        $176 = $labelInfo + 1310736 + ($166 + -5 << 2) | 0;
        HEAP32[$176 >> 2] = (HEAP32[$176 >> 2] | 0) + $j$069;
        $180 = $labelInfo + 1310736 + ($166 + -3 << 2) | 0;
        if ((HEAP32[$180 >> 2] | 0) < ($i$256 | 0)) HEAP32[$180 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($166 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $186 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($186 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $186;
        $189 = ($186 << 16 >> 16) * 7 | 0;
        $191 = $labelInfo + 1310736 + ($189 + -7 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + 1;
        $195 = $labelInfo + 1310736 + ($189 + -6 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $i$256;
        $199 = $labelInfo + 1310736 + ($189 + -5 << 2) | 0;
        HEAP32[$199 >> 2] = (HEAP32[$199 >> 2] | 0) + $j$069;
        $203 = $labelInfo + 1310736 + ($189 + -3 << 2) | 0;
        if ((HEAP32[$203 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$203 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $206 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $206;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $206 << 16 >> 16;
        $211 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($211 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($211 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($211 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($211 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $206;
        break;
       }
      }
      if ($66) {
       $69 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       $72 = HEAP32[$labelInfo + 1179664 + ($65 + -1 << 2) >> 2] | 0;
       if (($69 | 0) > ($72 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $72;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $19;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$053 >> 2] = $72;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $89 = $72;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $89 = $72;
       } else {
        HEAP16[$pnt2$363 >> 1] = $69;
        if (($69 | 0) < ($72 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $19;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($72 | 0)) HEAP32[$wk$150 >> 2] = $69;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $89 = $69;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $89 = $69;
       }
       $91 = ($89 << 16 >> 16) * 7 | 0;
       $93 = $labelInfo + 1310736 + ($91 + -7 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 1;
       $97 = $labelInfo + 1310736 + ($91 + -6 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $i$256;
       $101 = $labelInfo + 1310736 + ($91 + -5 << 2) | 0;
       HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($91 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $107 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($107 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $60;
       $147 = $61 * 7 | 0;
       $149 = $labelInfo + 1310736 + ($147 + -7 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + 1;
       $153 = $labelInfo + 1310736 + ($147 + -6 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $i$256;
       $157 = $labelInfo + 1310736 + ($147 + -5 << 2) | 0;
       HEAP32[$157 >> 2] = (HEAP32[$157 >> 2] | 0) + $j$069;
       $161 = $labelInfo + 1310736 + ($147 + -4 << 2) | 0;
       if ((HEAP32[$161 >> 2] | 0) > ($i$256 | 0)) HEAP32[$161 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($147 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $112 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
      $115 = HEAP32[$labelInfo + 1179664 + (($107 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($112 | 0) > ($115 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $115;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $19;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$246 >> 2] = $115;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $132 = $115;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $132 = $115;
      } else {
       HEAP16[$pnt2$363 >> 1] = $112;
       if (($112 | 0) < ($115 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $19;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($115 | 0)) HEAP32[$wk$343 >> 2] = $112;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $132 = $112;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $132 = $112;
      }
      $134 = ($132 << 16 >> 16) * 7 | 0;
      $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
      $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$256;
      $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
      HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $226 = $pnt$164 + 8 | 0;
     $227 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($12 | 0)) {
      $pnt$1$lcssa = $226;
      $pnt2$3$lcssa = $227;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $226;
      $pnt2$363 = $227;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $233 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $19;
   while (1) {
    $235 = HEAP32[$wk$440 >> 2] | 0;
    if (($235 | 0) == ($i$338 | 0)) {
     $241 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $241 = HEAP32[$labelInfo + 1179664 + ($235 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $241;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $245 = $labelInfo + 8 | 0;
  $246 = $j$1$lcssa + -1 | 0;
  HEAP32[$245 >> 2] = $246;
  if (!$246) $$0 = 0; else {
   _memset($233 | 0, 0, $246 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $246 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $253 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($253 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($253 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($253 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($253 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$245 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $267 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $268 = $i$534 * 7 | 0;
     $271 = $labelInfo + 12 + ($267 << 2) | 0;
     HEAP32[$271 >> 2] = (HEAP32[$271 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($268 << 2) >> 2] | 0);
     $278 = $267 << 1;
     $279 = $labelInfo + 655376 + ($278 << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 1 << 2) >> 2] | 0);
     $287 = $labelInfo + 655376 + (($278 | 1) << 3) | 0;
     HEAPF64[$287 >> 3] = +HEAPF64[$287 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($268 + 2 << 2) >> 2] | 0);
     $290 = $267 << 2;
     $291 = $labelInfo + 131084 + ($290 << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($268 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($290 | 1) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($268 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $305 = $labelInfo + 131084 + (($290 | 2) << 2) | 0;
     $309 = HEAP32[$labelInfo + 1310736 + ($268 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$305 >> 2] | 0) > ($309 | 0)) HEAP32[$305 >> 2] = $309;
     $312 = $labelInfo + 131084 + (($290 | 3) << 2) | 0;
     $316 = HEAP32[$labelInfo + 1310736 + ($268 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$312 >> 2] | 0) < ($316 | 0)) HEAP32[$312 >> 2] = $316;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$245 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $320 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $323 = $i$633 << 1;
     $324 = $labelInfo + 655376 + ($323 << 3) | 0;
     HEAPF64[$324 >> 3] = +HEAPF64[$324 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $330 = $labelInfo + 655376 + (($323 | 1) << 3) | 0;
     HEAPF64[$330 >> 3] = +HEAPF64[$330 >> 3] / +(HEAP32[$320 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$245 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {
      $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($39 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $39;
       $42 = ($39 << 16 >> 16) * 7 | 0;
       $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1;
       $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255;
       $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $59 = $58 << 16 >> 16;
      $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $64 = $62 << 16 >> 16 > 0;
      if ($58 << 16 >> 16 <= 0) {
       if ($64) {
        HEAP16[$pnt2$362 >> 1] = $62;
        $164 = $63 * 7 | 0;
        $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1;
        $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255;
        $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068;
        $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0;
        if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($184 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $184;
        $187 = ($184 << 16 >> 16) * 7 | 0;
        $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1;
        $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255;
        $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068;
        $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0;
        if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$201 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $204 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $204;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16;
        $209 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $204;
        break;
       }
      }
      if ($64) {
       $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
       $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       if (($67 | 0) > ($70 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $70;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $87 = $70;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $87 = $70;
       } else {
        HEAP16[$pnt2$362 >> 1] = $67;
        if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $87 = $67;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $87 = $67;
       }
       $89 = ($87 << 16 >> 16) * 7 | 0;
       $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1;
       $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255;
       $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($105 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $58;
       $145 = $59 * 7 | 0;
       $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1;
       $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255;
       $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068;
       $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0;
       if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
      $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($110 | 0) > ($113 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $113;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $130 = $113;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $130 = $113;
      } else {
       HEAP16[$pnt2$362 >> 1] = $110;
       if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $130 = $110;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $130 = $110;
      }
      $132 = ($130 << 16 >> 16) * 7 | 0;
      $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1;
      $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255;
      $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $224 = $pnt$163 + 2 | 0;
     $225 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $224;
      $pnt2$3$lcssa = $225;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $224;
      $pnt2$362 = $225;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $231 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $233 = HEAP32[$wk$439 >> 2] | 0;
    if (($233 | 0) == ($i$337 | 0)) {
     $239 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $239;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $243 = $labelInfo + 8 | 0;
  $244 = $j$1$lcssa + -1 | 0;
  HEAP32[$243 >> 2] = $244;
  if (!$244) $$0 = 0; else {
   _memset($231 | 0, 0, $244 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $251 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $266 = $i$533 * 7 | 0;
     $269 = $labelInfo + 12 + ($265 << 2) | 0;
     HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0);
     $276 = $265 << 1;
     $277 = $labelInfo + 655376 + ($276 << 3) | 0;
     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0);
     $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0);
     $288 = $265 << 2;
     $289 = $labelInfo + 131084 + ($288 << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$243 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $318 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $321 = $i$632 << 1;
     $322 = $labelInfo + 655376 + ($321 << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0);
     $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0;
     HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBR3CA4444($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $105 = 0, $110 = 0, $113 = 0, $130 = 0, $132 = 0, $134 = 0, $138 = 0, $142 = 0, $145 = 0, $147 = 0, $151 = 0, $155 = 0, $159 = 0, $164 = 0, $166 = 0, $17 = 0, $170 = 0, $174 = 0, $178 = 0, $18 = 0, $184 = 0, $187 = 0, $189 = 0, $19 = 0, $193 = 0, $197 = 0, $201 = 0, $204 = 0, $209 = 0, $224 = 0, $225 = 0, $231 = 0, $233 = 0, $239 = 0, $24 = 0, $243 = 0, $244 = 0, $251 = 0, $26 = 0, $265 = 0, $266 = 0, $269 = 0, $276 = 0, $277 = 0, $285 = 0, $288 = 0, $289 = 0, $293 = 0, $296 = 0, $300 = 0, $303 = 0, $307 = 0, $310 = 0, $314 = 0, $318 = 0, $321 = 0, $322 = 0, $328 = 0, $39 = 0, $42 = 0, $44 = 0, $48 = 0, $52 = 0, $58 = 0, $59 = 0, $62 = 0, $63 = 0, $64 = 0, $67 = 0, $70 = 0, $87 = 0, $89 = 0, $9 = 0, $91 = 0, $95 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 1) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     $26 = HEAPU8[$pnt$163 >> 0] | 0;
     do if ((($26 & 240) + 24 + ($26 << 4 & 240) + ((HEAPU8[$pnt$163 + 1 >> 0] | 0) & 240) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $39 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($39 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $39;
       $42 = ($39 << 16 >> 16) * 7 | 0;
       $44 = $labelInfo + 1310736 + ($42 + -7 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + 1;
       $48 = $labelInfo + 1310736 + ($42 + -6 << 2) | 0;
       HEAP32[$48 >> 2] = (HEAP32[$48 >> 2] | 0) + $i$255;
       $52 = $labelInfo + 1310736 + ($42 + -5 << 2) | 0;
       HEAP32[$52 >> 2] = (HEAP32[$52 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($42 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $58 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $59 = $58 << 16 >> 16;
      $62 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $63 = $62 << 16 >> 16;
      $64 = $62 << 16 >> 16 > 0;
      if ($58 << 16 >> 16 <= 0) {
       if ($64) {
        HEAP16[$pnt2$362 >> 1] = $62;
        $164 = $63 * 7 | 0;
        $166 = $labelInfo + 1310736 + ($164 + -7 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + 1;
        $170 = $labelInfo + 1310736 + ($164 + -6 << 2) | 0;
        HEAP32[$170 >> 2] = (HEAP32[$170 >> 2] | 0) + $i$255;
        $174 = $labelInfo + 1310736 + ($164 + -5 << 2) | 0;
        HEAP32[$174 >> 2] = (HEAP32[$174 >> 2] | 0) + $j$068;
        $178 = $labelInfo + 1310736 + ($164 + -3 << 2) | 0;
        if ((HEAP32[$178 >> 2] | 0) < ($i$255 | 0)) HEAP32[$178 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($164 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $184 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($184 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $184;
        $187 = ($184 << 16 >> 16) * 7 | 0;
        $189 = $labelInfo + 1310736 + ($187 + -7 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + 1;
        $193 = $labelInfo + 1310736 + ($187 + -6 << 2) | 0;
        HEAP32[$193 >> 2] = (HEAP32[$193 >> 2] | 0) + $i$255;
        $197 = $labelInfo + 1310736 + ($187 + -5 << 2) | 0;
        HEAP32[$197 >> 2] = (HEAP32[$197 >> 2] | 0) + $j$068;
        $201 = $labelInfo + 1310736 + ($187 + -3 << 2) | 0;
        if ((HEAP32[$201 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$201 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $204 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $204;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $204 << 16 >> 16;
        $209 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($209 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($209 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($209 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($209 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($209 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $204;
        break;
       }
      }
      if ($64) {
       $67 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
       $70 = HEAP32[$labelInfo + 1179664 + ($63 + -1 << 2) >> 2] | 0;
       if (($67 | 0) > ($70 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $70;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($67 | 0)) HEAP32[$wk$052 >> 2] = $70;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $87 = $70;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $87 = $70;
       } else {
        HEAP16[$pnt2$362 >> 1] = $67;
        if (($67 | 0) < ($70 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($70 | 0)) HEAP32[$wk$149 >> 2] = $67;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $87 = $67;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $87 = $67;
       }
       $89 = ($87 << 16 >> 16) * 7 | 0;
       $91 = $labelInfo + 1310736 + ($89 + -7 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + 1;
       $95 = $labelInfo + 1310736 + ($89 + -6 << 2) | 0;
       HEAP32[$95 >> 2] = (HEAP32[$95 >> 2] | 0) + $i$255;
       $99 = $labelInfo + 1310736 + ($89 + -5 << 2) | 0;
       HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($89 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $105 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($105 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $58;
       $145 = $59 * 7 | 0;
       $147 = $labelInfo + 1310736 + ($145 + -7 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + 1;
       $151 = $labelInfo + 1310736 + ($145 + -6 << 2) | 0;
       HEAP32[$151 >> 2] = (HEAP32[$151 >> 2] | 0) + $i$255;
       $155 = $labelInfo + 1310736 + ($145 + -5 << 2) | 0;
       HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + $j$068;
       $159 = $labelInfo + 1310736 + ($145 + -4 << 2) | 0;
       if ((HEAP32[$159 >> 2] | 0) > ($i$255 | 0)) HEAP32[$159 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($145 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $110 = HEAP32[$labelInfo + 1179664 + ($59 + -1 << 2) >> 2] | 0;
      $113 = HEAP32[$labelInfo + 1179664 + (($105 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($110 | 0) > ($113 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $113;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($110 | 0)) HEAP32[$wk$245 >> 2] = $113;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $130 = $113;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $130 = $113;
      } else {
       HEAP16[$pnt2$362 >> 1] = $110;
       if (($110 | 0) < ($113 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($113 | 0)) HEAP32[$wk$342 >> 2] = $110;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $130 = $110;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $130 = $110;
      }
      $132 = ($130 << 16 >> 16) * 7 | 0;
      $134 = $labelInfo + 1310736 + ($132 + -7 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + 1;
      $138 = $labelInfo + 1310736 + ($132 + -6 << 2) | 0;
      HEAP32[$138 >> 2] = (HEAP32[$138 >> 2] | 0) + $i$255;
      $142 = $labelInfo + 1310736 + ($132 + -5 << 2) | 0;
      HEAP32[$142 >> 2] = (HEAP32[$142 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $224 = $pnt$163 + 2 | 0;
     $225 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $224;
      $pnt2$3$lcssa = $225;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $224;
      $pnt2$362 = $225;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $231 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $233 = HEAP32[$wk$439 >> 2] | 0;
    if (($233 | 0) == ($i$337 | 0)) {
     $239 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $239 = HEAP32[$labelInfo + 1179664 + ($233 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $239;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $243 = $labelInfo + 8 | 0;
  $244 = $j$1$lcssa + -1 | 0;
  HEAP32[$243 >> 2] = $244;
  if (!$244) $$0 = 0; else {
   _memset($231 | 0, 0, $244 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $244 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $251 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($251 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($251 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($251 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($251 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$243 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $265 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $266 = $i$533 * 7 | 0;
     $269 = $labelInfo + 12 + ($265 << 2) | 0;
     HEAP32[$269 >> 2] = (HEAP32[$269 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($266 << 2) >> 2] | 0);
     $276 = $265 << 1;
     $277 = $labelInfo + 655376 + ($276 << 3) | 0;
     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 1 << 2) >> 2] | 0);
     $285 = $labelInfo + 655376 + (($276 | 1) << 3) | 0;
     HEAPF64[$285 >> 3] = +HEAPF64[$285 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($266 + 2 << 2) >> 2] | 0);
     $288 = $265 << 2;
     $289 = $labelInfo + 131084 + ($288 << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($266 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) > ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($288 | 1) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($266 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) < ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($288 | 2) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($266 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) > ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $310 = $labelInfo + 131084 + (($288 | 3) << 2) | 0;
     $314 = HEAP32[$labelInfo + 1310736 + ($266 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$310 >> 2] | 0) < ($314 | 0)) HEAP32[$310 >> 2] = $314;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$243 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $318 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $321 = $i$632 << 1;
     $322 = $labelInfo + 655376 + ($321 << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$318 >> 2] | 0);
     $328 = $labelInfo + 655376 + (($321 | 1) << 3) | 0;
     HEAPF64[$328 >> 3] = +HEAPF64[$328 >> 3] / +(HEAP32[$318 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$243 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 2) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) {
      $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($38 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $38;
       $41 = ($38 << 16 >> 16) * 7 | 0;
       $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1;
       $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255;
       $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $58 = $57 << 16 >> 16;
      $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $63 = $61 << 16 >> 16 > 0;
      if ($57 << 16 >> 16 <= 0) {
       if ($63) {
        HEAP16[$pnt2$362 >> 1] = $61;
        $163 = $62 * 7 | 0;
        $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1;
        $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255;
        $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068;
        $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0;
        if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($183 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $183;
        $186 = ($183 << 16 >> 16) * 7 | 0;
        $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1;
        $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255;
        $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068;
        $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0;
        if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$200 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $203 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $203;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16;
        $208 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $203;
        break;
       }
      }
      if ($63) {
       $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
       $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       if (($66 | 0) > ($69 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $69;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $86 = $69;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $86 = $69;
       } else {
        HEAP16[$pnt2$362 >> 1] = $66;
        if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $86 = $66;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $86 = $66;
       }
       $88 = ($86 << 16 >> 16) * 7 | 0;
       $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1;
       $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255;
       $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($104 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $57;
       $144 = $58 * 7 | 0;
       $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1;
       $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255;
       $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068;
       $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0;
       if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
      $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($109 | 0) > ($112 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $112;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $129 = $112;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $129 = $112;
      } else {
       HEAP16[$pnt2$362 >> 1] = $109;
       if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $129 = $109;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $129 = $109;
      }
      $131 = ($129 << 16 >> 16) * 7 | 0;
      $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1;
      $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255;
      $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $223 = $pnt$163 + 4 | 0;
     $224 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $223;
      $pnt2$3$lcssa = $224;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $223;
      $pnt2$362 = $224;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 8 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $230 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $232 = HEAP32[$wk$439 >> 2] | 0;
    if (($232 | 0) == ($i$337 | 0)) {
     $238 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $238;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $242 = $labelInfo + 8 | 0;
  $243 = $j$1$lcssa + -1 | 0;
  HEAP32[$242 >> 2] = $243;
  if (!$243) $$0 = 0; else {
   _memset($230 | 0, 0, $243 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $250 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $265 = $i$533 * 7 | 0;
     $268 = $labelInfo + 12 + ($264 << 2) | 0;
     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);
     $275 = $264 << 1;
     $276 = $labelInfo + 655376 + ($275 << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);
     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);
     $287 = $264 << 2;
     $288 = $labelInfo + 131084 + ($287 << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$242 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $317 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $320 = $i$632 << 1;
     $321 = $labelInfo + 655376 + ($320 << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBRA3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $104 = 0, $109 = 0, $112 = 0, $129 = 0, $131 = 0, $133 = 0, $137 = 0, $141 = 0, $144 = 0, $146 = 0, $150 = 0, $154 = 0, $158 = 0, $163 = 0, $165 = 0, $169 = 0, $17 = 0, $173 = 0, $177 = 0, $18 = 0, $183 = 0, $186 = 0, $188 = 0, $19 = 0, $192 = 0, $196 = 0, $200 = 0, $203 = 0, $208 = 0, $223 = 0, $224 = 0, $230 = 0, $232 = 0, $238 = 0, $24 = 0, $242 = 0, $243 = 0, $250 = 0, $264 = 0, $265 = 0, $268 = 0, $275 = 0, $276 = 0, $284 = 0, $287 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $302 = 0, $306 = 0, $309 = 0, $313 = 0, $317 = 0, $320 = 0, $321 = 0, $327 = 0, $38 = 0, $41 = 0, $43 = 0, $47 = 0, $51 = 0, $57 = 0, $58 = 0, $61 = 0, $62 = 0, $63 = 0, $66 = 0, $69 = 0, $86 = 0, $88 = 0, $9 = 0, $90 = 0, $94 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 2) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 2 >> 0] | 0) + (HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 + 3 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $38 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($38 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $38;
       $41 = ($38 << 16 >> 16) * 7 | 0;
       $43 = $labelInfo + 1310736 + ($41 + -7 << 2) | 0;
       HEAP32[$43 >> 2] = (HEAP32[$43 >> 2] | 0) + 1;
       $47 = $labelInfo + 1310736 + ($41 + -6 << 2) | 0;
       HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $i$255;
       $51 = $labelInfo + 1310736 + ($41 + -5 << 2) | 0;
       HEAP32[$51 >> 2] = (HEAP32[$51 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($41 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $57 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $58 = $57 << 16 >> 16;
      $61 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $62 = $61 << 16 >> 16;
      $63 = $61 << 16 >> 16 > 0;
      if ($57 << 16 >> 16 <= 0) {
       if ($63) {
        HEAP16[$pnt2$362 >> 1] = $61;
        $163 = $62 * 7 | 0;
        $165 = $labelInfo + 1310736 + ($163 + -7 << 2) | 0;
        HEAP32[$165 >> 2] = (HEAP32[$165 >> 2] | 0) + 1;
        $169 = $labelInfo + 1310736 + ($163 + -6 << 2) | 0;
        HEAP32[$169 >> 2] = (HEAP32[$169 >> 2] | 0) + $i$255;
        $173 = $labelInfo + 1310736 + ($163 + -5 << 2) | 0;
        HEAP32[$173 >> 2] = (HEAP32[$173 >> 2] | 0) + $j$068;
        $177 = $labelInfo + 1310736 + ($163 + -3 << 2) | 0;
        if ((HEAP32[$177 >> 2] | 0) < ($i$255 | 0)) HEAP32[$177 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($163 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $183 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($183 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $183;
        $186 = ($183 << 16 >> 16) * 7 | 0;
        $188 = $labelInfo + 1310736 + ($186 + -7 << 2) | 0;
        HEAP32[$188 >> 2] = (HEAP32[$188 >> 2] | 0) + 1;
        $192 = $labelInfo + 1310736 + ($186 + -6 << 2) | 0;
        HEAP32[$192 >> 2] = (HEAP32[$192 >> 2] | 0) + $i$255;
        $196 = $labelInfo + 1310736 + ($186 + -5 << 2) | 0;
        HEAP32[$196 >> 2] = (HEAP32[$196 >> 2] | 0) + $j$068;
        $200 = $labelInfo + 1310736 + ($186 + -3 << 2) | 0;
        if ((HEAP32[$200 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$200 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $203 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $203;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $203 << 16 >> 16;
        $208 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($208 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($208 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($208 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($208 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($208 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $203;
        break;
       }
      }
      if ($63) {
       $66 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
       $69 = HEAP32[$labelInfo + 1179664 + ($62 + -1 << 2) >> 2] | 0;
       if (($66 | 0) > ($69 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $69;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($66 | 0)) HEAP32[$wk$052 >> 2] = $69;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $86 = $69;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $86 = $69;
       } else {
        HEAP16[$pnt2$362 >> 1] = $66;
        if (($66 | 0) < ($69 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($69 | 0)) HEAP32[$wk$149 >> 2] = $66;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $86 = $66;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $86 = $66;
       }
       $88 = ($86 << 16 >> 16) * 7 | 0;
       $90 = $labelInfo + 1310736 + ($88 + -7 << 2) | 0;
       HEAP32[$90 >> 2] = (HEAP32[$90 >> 2] | 0) + 1;
       $94 = $labelInfo + 1310736 + ($88 + -6 << 2) | 0;
       HEAP32[$94 >> 2] = (HEAP32[$94 >> 2] | 0) + $i$255;
       $98 = $labelInfo + 1310736 + ($88 + -5 << 2) | 0;
       HEAP32[$98 >> 2] = (HEAP32[$98 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($88 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $104 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($104 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $57;
       $144 = $58 * 7 | 0;
       $146 = $labelInfo + 1310736 + ($144 + -7 << 2) | 0;
       HEAP32[$146 >> 2] = (HEAP32[$146 >> 2] | 0) + 1;
       $150 = $labelInfo + 1310736 + ($144 + -6 << 2) | 0;
       HEAP32[$150 >> 2] = (HEAP32[$150 >> 2] | 0) + $i$255;
       $154 = $labelInfo + 1310736 + ($144 + -5 << 2) | 0;
       HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + $j$068;
       $158 = $labelInfo + 1310736 + ($144 + -4 << 2) | 0;
       if ((HEAP32[$158 >> 2] | 0) > ($i$255 | 0)) HEAP32[$158 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($144 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $109 = HEAP32[$labelInfo + 1179664 + ($58 + -1 << 2) >> 2] | 0;
      $112 = HEAP32[$labelInfo + 1179664 + (($104 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($109 | 0) > ($112 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $112;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($109 | 0)) HEAP32[$wk$245 >> 2] = $112;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $129 = $112;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $129 = $112;
      } else {
       HEAP16[$pnt2$362 >> 1] = $109;
       if (($109 | 0) < ($112 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($112 | 0)) HEAP32[$wk$342 >> 2] = $109;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $129 = $109;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $129 = $109;
      }
      $131 = ($129 << 16 >> 16) * 7 | 0;
      $133 = $labelInfo + 1310736 + ($131 + -7 << 2) | 0;
      HEAP32[$133 >> 2] = (HEAP32[$133 >> 2] | 0) + 1;
      $137 = $labelInfo + 1310736 + ($131 + -6 << 2) | 0;
      HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + $i$255;
      $141 = $labelInfo + 1310736 + ($131 + -5 << 2) | 0;
      HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $223 = $pnt$163 + 4 | 0;
     $224 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $223;
      $pnt2$3$lcssa = $224;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $223;
      $pnt2$362 = $224;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 8 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $230 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $232 = HEAP32[$wk$439 >> 2] | 0;
    if (($232 | 0) == ($i$337 | 0)) {
     $238 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $238 = HEAP32[$labelInfo + 1179664 + ($232 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $238;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $242 = $labelInfo + 8 | 0;
  $243 = $j$1$lcssa + -1 | 0;
  HEAP32[$242 >> 2] = $243;
  if (!$243) $$0 = 0; else {
   _memset($230 | 0, 0, $243 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $243 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $250 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($250 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($250 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($250 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($250 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$242 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $264 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $265 = $i$533 * 7 | 0;
     $268 = $labelInfo + 12 + ($264 << 2) | 0;
     HEAP32[$268 >> 2] = (HEAP32[$268 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($265 << 2) >> 2] | 0);
     $275 = $264 << 1;
     $276 = $labelInfo + 655376 + ($275 << 3) | 0;
     HEAPF64[$276 >> 3] = +HEAPF64[$276 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 1 << 2) >> 2] | 0);
     $284 = $labelInfo + 655376 + (($275 | 1) << 3) | 0;
     HEAPF64[$284 >> 3] = +HEAPF64[$284 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($265 + 2 << 2) >> 2] | 0);
     $287 = $264 << 2;
     $288 = $labelInfo + 131084 + ($287 << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($265 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) > ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($287 | 1) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($265 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) < ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($287 | 2) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($265 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) > ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $309 = $labelInfo + 131084 + (($287 | 3) << 2) | 0;
     $313 = HEAP32[$labelInfo + 1310736 + ($265 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$309 >> 2] | 0) < ($313 | 0)) HEAP32[$309 >> 2] = $313;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$242 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $317 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $320 = $i$632 << 1;
     $321 = $labelInfo + 655376 + ($320 << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $327 = $labelInfo + 655376 + (($320 | 1) << 3) | 0;
     HEAPF64[$327 >> 3] = +HEAPF64[$327 >> 3] / +(HEAP32[$317 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$242 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 * 3 | 0) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($37 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $37;
       $40 = ($37 << 16 >> 16) * 7 | 0;
       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;
       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;
       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $62 = $60 << 16 >> 16 > 0;
      if ($56 << 16 >> 16 <= 0) {
       if ($62) {
        HEAP16[$pnt2$362 >> 1] = $60;
        $162 = $61 * 7 | 0;
        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;
        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;
        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;
        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;
        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($182 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $182;
        $185 = ($182 << 16 >> 16) * 7 | 0;
        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;
        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;
        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;
        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;
        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$199 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $202 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $202;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;
        $207 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $202;
        break;
       }
      }
      if ($62) {
       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       if (($65 | 0) > ($68 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $68;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $85 = $68;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $85 = $68;
       } else {
        HEAP16[$pnt2$362 >> 1] = $65;
        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $85 = $65;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $85 = $65;
       }
       $87 = ($85 << 16 >> 16) * 7 | 0;
       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;
       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;
       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($103 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $56;
       $143 = $57 * 7 | 0;
       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;
       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;
       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;
       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($108 | 0) > ($111 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $111;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $128 = $111;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $128 = $111;
      } else {
       HEAP16[$pnt2$362 >> 1] = $108;
       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $128 = $108;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $128 = $108;
      }
      $130 = ($128 << 16 >> 16) * 7 | 0;
      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;
      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;
      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $222 = $pnt$163 + 3 | 0;
     $223 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $222;
      $pnt2$3$lcssa = $223;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $222;
      $pnt2$362 = $223;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 6 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $231 = HEAP32[$wk$439 >> 2] | 0;
    if (($231 | 0) == ($i$337 | 0)) {
     $237 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $237;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $249 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$533 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $319 = $i$632 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBR3C($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 * 3 | 0) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($37 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $37;
       $40 = ($37 << 16 >> 16) * 7 | 0;
       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;
       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;
       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $62 = $60 << 16 >> 16 > 0;
      if ($56 << 16 >> 16 <= 0) {
       if ($62) {
        HEAP16[$pnt2$362 >> 1] = $60;
        $162 = $61 * 7 | 0;
        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;
        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;
        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;
        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;
        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($182 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $182;
        $185 = ($182 << 16 >> 16) * 7 | 0;
        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;
        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;
        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;
        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;
        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$199 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $202 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $202;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;
        $207 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $202;
        break;
       }
      }
      if ($62) {
       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       if (($65 | 0) > ($68 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $68;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $85 = $68;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $85 = $68;
       } else {
        HEAP16[$pnt2$362 >> 1] = $65;
        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $85 = $65;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $85 = $65;
       }
       $87 = ($85 << 16 >> 16) * 7 | 0;
       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;
       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;
       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($103 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $56;
       $143 = $57 * 7 | 0;
       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;
       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;
       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;
       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($108 | 0) > ($111 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $111;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $128 = $111;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $128 = $111;
      } else {
       HEAP16[$pnt2$362 >> 1] = $108;
       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $128 = $108;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $128 = $108;
      }
      $130 = ($128 << 16 >> 16) * 7 | 0;
      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;
      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;
      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $222 = $pnt$163 + 3 | 0;
     $223 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $222;
      $pnt2$3$lcssa = $223;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $222;
      $pnt2$362 = $223;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 6 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $231 = HEAP32[$wk$439 >> 2] | 0;
    if (($231 | 0) == ($i$337 | 0)) {
     $237 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $237;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $249 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$533 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $319 = $i$632 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 2) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($37 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $37;
       $40 = ($37 << 16 >> 16) * 7 | 0;
       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;
       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;
       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $62 = $60 << 16 >> 16 > 0;
      if ($56 << 16 >> 16 <= 0) {
       if ($62) {
        HEAP16[$pnt2$362 >> 1] = $60;
        $162 = $61 * 7 | 0;
        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;
        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;
        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;
        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;
        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($182 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $182;
        $185 = ($182 << 16 >> 16) * 7 | 0;
        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;
        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;
        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;
        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;
        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$199 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $202 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $202;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;
        $207 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $202;
        break;
       }
      }
      if ($62) {
       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       if (($65 | 0) > ($68 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $68;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $85 = $68;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $85 = $68;
       } else {
        HEAP16[$pnt2$362 >> 1] = $65;
        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $85 = $65;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $85 = $65;
       }
       $87 = ($85 << 16 >> 16) * 7 | 0;
       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;
       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;
       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($103 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $56;
       $143 = $57 * 7 | 0;
       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;
       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;
       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;
       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($108 | 0) > ($111 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $111;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $128 = $111;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $128 = $111;
      } else {
       HEAP16[$pnt2$362 >> 1] = $108;
       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $128 = $108;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $128 = $108;
      }
      $130 = ($128 << 16 >> 16) * 7 | 0;
      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;
      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;
      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $222 = $pnt$163 + 4 | 0;
     $223 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $222;
      $pnt2$3$lcssa = $223;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $222;
      $pnt2$362 = $223;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 8 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $231 = HEAP32[$wk$439 >> 2] | 0;
    if (($231 | 0) == ($i$337 | 0)) {
     $237 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $237;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $249 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$533 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $319 = $i$632 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBR3CA($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $108 = 0, $111 = 0, $128 = 0, $130 = 0, $132 = 0, $136 = 0, $140 = 0, $143 = 0, $145 = 0, $149 = 0, $153 = 0, $157 = 0, $162 = 0, $164 = 0, $168 = 0, $17 = 0, $172 = 0, $176 = 0, $18 = 0, $182 = 0, $185 = 0, $187 = 0, $19 = 0, $191 = 0, $195 = 0, $199 = 0, $202 = 0, $207 = 0, $222 = 0, $223 = 0, $229 = 0, $231 = 0, $237 = 0, $24 = 0, $241 = 0, $242 = 0, $249 = 0, $263 = 0, $264 = 0, $267 = 0, $274 = 0, $275 = 0, $283 = 0, $286 = 0, $287 = 0, $291 = 0, $294 = 0, $298 = 0, $301 = 0, $305 = 0, $308 = 0, $312 = 0, $316 = 0, $319 = 0, $320 = 0, $326 = 0, $37 = 0, $40 = 0, $42 = 0, $46 = 0, $50 = 0, $56 = 0, $57 = 0, $60 = 0, $61 = 0, $62 = 0, $65 = 0, $68 = 0, $85 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $97 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $labelingThresh * 3 | 0;
 $10 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($10 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $17 = $labelInfo + 1179664 | 0;
 $18 = $xsize + 1 | 0;
 $19 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $24 = ($10 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($18 << 2) | 0;
  $pnt2$271 = $0 + ($18 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($24) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if (((HEAPU8[$pnt$163 + 1 >> 0] | 0) + (HEAPU8[$pnt$163 >> 0] | 0) + (HEAPU8[$pnt$163 + 2 >> 0] | 0) | 0) > ($9 | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $37 = HEAP16[$pnt2$362 + ($19 << 1) >> 1] | 0;
      if ($37 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $37;
       $40 = ($37 << 16 >> 16) * 7 | 0;
       $42 = $labelInfo + 1310736 + ($40 + -7 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 1;
       $46 = $labelInfo + 1310736 + ($40 + -6 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $i$255;
       $50 = $labelInfo + 1310736 + ($40 + -5 << 2) | 0;
       HEAP32[$50 >> 2] = (HEAP32[$50 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($40 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $56 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $60 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $61 = $60 << 16 >> 16;
      $62 = $60 << 16 >> 16 > 0;
      if ($56 << 16 >> 16 <= 0) {
       if ($62) {
        HEAP16[$pnt2$362 >> 1] = $60;
        $162 = $61 * 7 | 0;
        $164 = $labelInfo + 1310736 + ($162 + -7 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + 1;
        $168 = $labelInfo + 1310736 + ($162 + -6 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $i$255;
        $172 = $labelInfo + 1310736 + ($162 + -5 << 2) | 0;
        HEAP32[$172 >> 2] = (HEAP32[$172 >> 2] | 0) + $j$068;
        $176 = $labelInfo + 1310736 + ($162 + -3 << 2) | 0;
        if ((HEAP32[$176 >> 2] | 0) < ($i$255 | 0)) HEAP32[$176 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($162 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $182 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($182 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $182;
        $185 = ($182 << 16 >> 16) * 7 | 0;
        $187 = $labelInfo + 1310736 + ($185 + -7 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + 1;
        $191 = $labelInfo + 1310736 + ($185 + -6 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $i$255;
        $195 = $labelInfo + 1310736 + ($185 + -5 << 2) | 0;
        HEAP32[$195 >> 2] = (HEAP32[$195 >> 2] | 0) + $j$068;
        $199 = $labelInfo + 1310736 + ($185 + -3 << 2) | 0;
        if ((HEAP32[$199 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$199 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $202 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $202;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $202 << 16 >> 16;
        $207 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($207 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($207 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($207 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($207 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $202;
        break;
       }
      }
      if ($62) {
       $65 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       $68 = HEAP32[$labelInfo + 1179664 + ($61 + -1 << 2) >> 2] | 0;
       if (($65 | 0) > ($68 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $68;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $17;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($65 | 0)) HEAP32[$wk$052 >> 2] = $68;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $85 = $68;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $85 = $68;
       } else {
        HEAP16[$pnt2$362 >> 1] = $65;
        if (($65 | 0) < ($68 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $17;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($68 | 0)) HEAP32[$wk$149 >> 2] = $65;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $85 = $65;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $85 = $65;
       }
       $87 = ($85 << 16 >> 16) * 7 | 0;
       $89 = $labelInfo + 1310736 + ($87 + -7 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + 1;
       $93 = $labelInfo + 1310736 + ($87 + -6 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $i$255;
       $97 = $labelInfo + 1310736 + ($87 + -5 << 2) | 0;
       HEAP32[$97 >> 2] = (HEAP32[$97 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($87 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $103 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($103 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $56;
       $143 = $57 * 7 | 0;
       $145 = $labelInfo + 1310736 + ($143 + -7 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + 1;
       $149 = $labelInfo + 1310736 + ($143 + -6 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $i$255;
       $153 = $labelInfo + 1310736 + ($143 + -5 << 2) | 0;
       HEAP32[$153 >> 2] = (HEAP32[$153 >> 2] | 0) + $j$068;
       $157 = $labelInfo + 1310736 + ($143 + -4 << 2) | 0;
       if ((HEAP32[$157 >> 2] | 0) > ($i$255 | 0)) HEAP32[$157 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($143 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $108 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
      $111 = HEAP32[$labelInfo + 1179664 + (($103 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($108 | 0) > ($111 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $111;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $17;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($108 | 0)) HEAP32[$wk$245 >> 2] = $111;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $128 = $111;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $128 = $111;
      } else {
       HEAP16[$pnt2$362 >> 1] = $108;
       if (($108 | 0) < ($111 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $17;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($111 | 0)) HEAP32[$wk$342 >> 2] = $108;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $128 = $108;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $128 = $108;
      }
      $130 = ($128 << 16 >> 16) * 7 | 0;
      $132 = $labelInfo + 1310736 + ($130 + -7 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + 1;
      $136 = $labelInfo + 1310736 + ($130 + -6 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $i$255;
      $140 = $labelInfo + 1310736 + ($130 + -5 << 2) | 0;
      HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $222 = $pnt$163 + 4 | 0;
     $223 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($10 | 0)) {
      $pnt$1$lcssa = $222;
      $pnt2$3$lcssa = $223;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $222;
      $pnt2$362 = $223;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 8 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $229 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $17;
   while (1) {
    $231 = HEAP32[$wk$439 >> 2] | 0;
    if (($231 | 0) == ($i$337 | 0)) {
     $237 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $237 = HEAP32[$labelInfo + 1179664 + ($231 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $237;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $241 = $labelInfo + 8 | 0;
  $242 = $j$1$lcssa + -1 | 0;
  HEAP32[$241 >> 2] = $242;
  if (!$242) $$0 = 0; else {
   _memset($229 | 0, 0, $242 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $242 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $249 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($249 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($249 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($249 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($249 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$241 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $263 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $264 = $i$533 * 7 | 0;
     $267 = $labelInfo + 12 + ($263 << 2) | 0;
     HEAP32[$267 >> 2] = (HEAP32[$267 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($264 << 2) >> 2] | 0);
     $274 = $263 << 1;
     $275 = $labelInfo + 655376 + ($274 << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 1 << 2) >> 2] | 0);
     $283 = $labelInfo + 655376 + (($274 | 1) << 3) | 0;
     HEAPF64[$283 >> 3] = +HEAPF64[$283 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($264 + 2 << 2) >> 2] | 0);
     $286 = $263 << 2;
     $287 = $labelInfo + 131084 + ($286 << 2) | 0;
     $291 = HEAP32[$labelInfo + 1310736 + ($264 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$287 >> 2] | 0) > ($291 | 0)) HEAP32[$287 >> 2] = $291;
     $294 = $labelInfo + 131084 + (($286 | 1) << 2) | 0;
     $298 = HEAP32[$labelInfo + 1310736 + ($264 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$294 >> 2] | 0) < ($298 | 0)) HEAP32[$294 >> 2] = $298;
     $301 = $labelInfo + 131084 + (($286 | 2) << 2) | 0;
     $305 = HEAP32[$labelInfo + 1310736 + ($264 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$301 >> 2] | 0) > ($305 | 0)) HEAP32[$301 >> 2] = $305;
     $308 = $labelInfo + 131084 + (($286 | 3) << 2) | 0;
     $312 = HEAP32[$labelInfo + 1310736 + ($264 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$308 >> 2] | 0) < ($312 | 0)) HEAP32[$308 >> 2] = $312;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$241 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $316 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $319 = $i$632 << 1;
     $320 = $labelInfo + 655376 + ($319 << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $326 = $labelInfo + 655376 + (($319 | 1) << 3) | 0;
     HEAPF64[$326 >> 3] = +HEAPF64[$326 >> 3] / +(HEAP32[$316 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$241 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $27 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($27) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($33 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $33;
       $36 = ($33 << 16 >> 16) * 7 | 0;
       $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0;
       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1;
       $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256;
       $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $53 = $52 << 16 >> 16;
      $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $58 = $56 << 16 >> 16 > 0;
      if ($52 << 16 >> 16 <= 0) {
       if ($58) {
        HEAP16[$pnt2$363 >> 1] = $56;
        $158 = $57 * 7 | 0;
        $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0;
        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1;
        $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256;
        $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069;
        $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0;
        if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($178 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $178;
        $181 = ($178 << 16 >> 16) * 7 | 0;
        $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0;
        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1;
        $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256;
        $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069;
        $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0;
        if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$195 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $198 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $198;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16;
        $203 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $198;
        break;
       }
      }
      if ($58) {
       $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
       $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       if (($61 | 0) > ($64 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $64;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $81 = $64;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $81 = $64;
       } else {
        HEAP16[$pnt2$363 >> 1] = $61;
        if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $81 = $61;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $81 = $61;
       }
       $83 = ($81 << 16 >> 16) * 7 | 0;
       $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0;
       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1;
       $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256;
       $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($99 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $52;
       $139 = $53 * 7 | 0;
       $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
       $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256;
       $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069;
       $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0;
       if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
      $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($104 | 0) > ($107 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $107;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $124 = $107;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $124 = $107;
      } else {
       HEAP16[$pnt2$363 >> 1] = $104;
       if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $124 = $104;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $124 = $104;
      }
      $126 = ($124 << 16 >> 16) * 7 | 0;
      $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0;
      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1;
      $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256;
      $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $218 = $pnt$164 + 4 | 0;
     $219 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $218;
      $pnt2$3$lcssa = $219;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $218;
      $pnt2$363 = $219;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $225 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $227 = HEAP32[$wk$440 >> 2] | 0;
    if (($227 | 0) == ($i$338 | 0)) {
     $233 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $233;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $237 = $labelInfo + 8 | 0;
  $238 = $j$1$lcssa + -1 | 0;
  HEAP32[$237 >> 2] = $238;
  if (!$238) $$0 = 0; else {
   _memset($225 | 0, 0, $238 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $245 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $260 = $i$534 * 7 | 0;
     $263 = $labelInfo + 12 + ($259 << 2) | 0;
     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);
     $270 = $259 << 1;
     $271 = $labelInfo + 655376 + ($270 << 3) | 0;
     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);
     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);
     $282 = $259 << 2;
     $283 = $labelInfo + 131084 + ($282 << 2) | 0;
     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;
     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;
     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;
     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$237 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $312 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $315 = $i$633 << 1;
     $316 = $labelInfo + 655376 + ($315 << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBICY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $104 = 0, $107 = 0, $11 = 0, $124 = 0, $126 = 0, $128 = 0, $132 = 0, $136 = 0, $139 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $158 = 0, $160 = 0, $164 = 0, $168 = 0, $172 = 0, $178 = 0, $18 = 0, $181 = 0, $183 = 0, $187 = 0, $191 = 0, $195 = 0, $198 = 0, $2 = 0, $20 = 0, $203 = 0, $218 = 0, $219 = 0, $225 = 0, $227 = 0, $233 = 0, $237 = 0, $238 = 0, $245 = 0, $259 = 0, $260 = 0, $263 = 0, $27 = 0, $270 = 0, $271 = 0, $279 = 0, $282 = 0, $283 = 0, $287 = 0, $290 = 0, $294 = 0, $297 = 0, $3 = 0, $301 = 0, $304 = 0, $308 = 0, $312 = 0, $315 = 0, $316 = 0, $322 = 0, $33 = 0, $36 = 0, $38 = 0, $42 = 0, $46 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $58 = 0, $61 = 0, $64 = 0, $81 = 0, $83 = 0, $85 = 0, $89 = 0, $93 = 0, $99 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $27 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($27) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $33 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($33 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $33;
       $36 = ($33 << 16 >> 16) * 7 | 0;
       $38 = $labelInfo + 1310736 + ($36 + -7 << 2) | 0;
       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + 1;
       $42 = $labelInfo + 1310736 + ($36 + -6 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $i$256;
       $46 = $labelInfo + 1310736 + ($36 + -5 << 2) | 0;
       HEAP32[$46 >> 2] = (HEAP32[$46 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($36 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $52 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $53 = $52 << 16 >> 16;
      $56 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $57 = $56 << 16 >> 16;
      $58 = $56 << 16 >> 16 > 0;
      if ($52 << 16 >> 16 <= 0) {
       if ($58) {
        HEAP16[$pnt2$363 >> 1] = $56;
        $158 = $57 * 7 | 0;
        $160 = $labelInfo + 1310736 + ($158 + -7 << 2) | 0;
        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 1;
        $164 = $labelInfo + 1310736 + ($158 + -6 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $i$256;
        $168 = $labelInfo + 1310736 + ($158 + -5 << 2) | 0;
        HEAP32[$168 >> 2] = (HEAP32[$168 >> 2] | 0) + $j$069;
        $172 = $labelInfo + 1310736 + ($158 + -3 << 2) | 0;
        if ((HEAP32[$172 >> 2] | 0) < ($i$256 | 0)) HEAP32[$172 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($158 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $178 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($178 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $178;
        $181 = ($178 << 16 >> 16) * 7 | 0;
        $183 = $labelInfo + 1310736 + ($181 + -7 << 2) | 0;
        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + 1;
        $187 = $labelInfo + 1310736 + ($181 + -6 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $i$256;
        $191 = $labelInfo + 1310736 + ($181 + -5 << 2) | 0;
        HEAP32[$191 >> 2] = (HEAP32[$191 >> 2] | 0) + $j$069;
        $195 = $labelInfo + 1310736 + ($181 + -3 << 2) | 0;
        if ((HEAP32[$195 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$195 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $198 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $198;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $198 << 16 >> 16;
        $203 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($203 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($203 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($203 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($203 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($203 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $198;
        break;
       }
      }
      if ($58) {
       $61 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
       $64 = HEAP32[$labelInfo + 1179664 + ($57 + -1 << 2) >> 2] | 0;
       if (($61 | 0) > ($64 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $64;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($61 | 0)) HEAP32[$wk$053 >> 2] = $64;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $81 = $64;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $81 = $64;
       } else {
        HEAP16[$pnt2$363 >> 1] = $61;
        if (($61 | 0) < ($64 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($64 | 0)) HEAP32[$wk$150 >> 2] = $61;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $81 = $61;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $81 = $61;
       }
       $83 = ($81 << 16 >> 16) * 7 | 0;
       $85 = $labelInfo + 1310736 + ($83 + -7 << 2) | 0;
       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + 1;
       $89 = $labelInfo + 1310736 + ($83 + -6 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $i$256;
       $93 = $labelInfo + 1310736 + ($83 + -5 << 2) | 0;
       HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($83 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $99 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($99 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $52;
       $139 = $53 * 7 | 0;
       $141 = $labelInfo + 1310736 + ($139 + -7 << 2) | 0;
       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + 1;
       $145 = $labelInfo + 1310736 + ($139 + -6 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $i$256;
       $149 = $labelInfo + 1310736 + ($139 + -5 << 2) | 0;
       HEAP32[$149 >> 2] = (HEAP32[$149 >> 2] | 0) + $j$069;
       $153 = $labelInfo + 1310736 + ($139 + -4 << 2) | 0;
       if ((HEAP32[$153 >> 2] | 0) > ($i$256 | 0)) HEAP32[$153 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($139 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $104 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
      $107 = HEAP32[$labelInfo + 1179664 + (($99 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($104 | 0) > ($107 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $107;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($104 | 0)) HEAP32[$wk$246 >> 2] = $107;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $124 = $107;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $124 = $107;
      } else {
       HEAP16[$pnt2$363 >> 1] = $104;
       if (($104 | 0) < ($107 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($107 | 0)) HEAP32[$wk$343 >> 2] = $104;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $124 = $104;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $124 = $104;
      }
      $126 = ($124 << 16 >> 16) * 7 | 0;
      $128 = $labelInfo + 1310736 + ($126 + -7 << 2) | 0;
      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + 1;
      $132 = $labelInfo + 1310736 + ($126 + -6 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $i$256;
      $136 = $labelInfo + 1310736 + ($126 + -5 << 2) | 0;
      HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $218 = $pnt$164 + 4 | 0;
     $219 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $218;
      $pnt2$3$lcssa = $219;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $218;
      $pnt2$363 = $219;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $225 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $227 = HEAP32[$wk$440 >> 2] | 0;
    if (($227 | 0) == ($i$338 | 0)) {
     $233 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $233 = HEAP32[$labelInfo + 1179664 + ($227 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $233;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $237 = $labelInfo + 8 | 0;
  $238 = $j$1$lcssa + -1 | 0;
  HEAP32[$237 >> 2] = $238;
  if (!$238) $$0 = 0; else {
   _memset($225 | 0, 0, $238 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $238 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $245 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($245 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($245 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($245 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($245 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$237 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $259 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $260 = $i$534 * 7 | 0;
     $263 = $labelInfo + 12 + ($259 << 2) | 0;
     HEAP32[$263 >> 2] = (HEAP32[$263 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($260 << 2) >> 2] | 0);
     $270 = $259 << 1;
     $271 = $labelInfo + 655376 + ($270 << 3) | 0;
     HEAPF64[$271 >> 3] = +HEAPF64[$271 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 1 << 2) >> 2] | 0);
     $279 = $labelInfo + 655376 + (($270 | 1) << 3) | 0;
     HEAPF64[$279 >> 3] = +HEAPF64[$279 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($260 + 2 << 2) >> 2] | 0);
     $282 = $259 << 2;
     $283 = $labelInfo + 131084 + ($282 << 2) | 0;
     $287 = HEAP32[$labelInfo + 1310736 + ($260 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$283 >> 2] | 0) > ($287 | 0)) HEAP32[$283 >> 2] = $287;
     $290 = $labelInfo + 131084 + (($282 | 1) << 2) | 0;
     $294 = HEAP32[$labelInfo + 1310736 + ($260 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$290 >> 2] | 0) < ($294 | 0)) HEAP32[$290 >> 2] = $294;
     $297 = $labelInfo + 131084 + (($282 | 2) << 2) | 0;
     $301 = HEAP32[$labelInfo + 1310736 + ($260 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$297 >> 2] | 0) > ($301 | 0)) HEAP32[$297 >> 2] = $301;
     $304 = $labelInfo + 131084 + (($282 | 3) << 2) | 0;
     $308 = HEAP32[$labelInfo + 1310736 + ($260 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$304 >> 2] | 0) < ($308 | 0)) HEAP32[$304 >> 2] = $308;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$237 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $312 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $315 = $i$633 << 1;
     $316 = $labelInfo + 655376 + ($315 << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $322 = $labelInfo + 655376 + (($315 | 1) << 3) | 0;
     HEAPF64[$322 >> 3] = +HEAPF64[$322 >> 3] / +(HEAP32[$312 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$237 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $27 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($27) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($32 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $32;
       $35 = ($32 << 16 >> 16) * 7 | 0;
       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;
       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256;
       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $57 = $55 << 16 >> 16 > 0;
      if ($51 << 16 >> 16 <= 0) {
       if ($57) {
        HEAP16[$pnt2$363 >> 1] = $55;
        $157 = $56 * 7 | 0;
        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;
        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256;
        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069;
        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;
        if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($177 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $177;
        $180 = ($177 << 16 >> 16) * 7 | 0;
        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;
        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256;
        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069;
        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;
        if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$194 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $197 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $197;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16;
        $202 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $197;
        break;
       }
      }
      if ($57) {
       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       if (($60 | 0) > ($63 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $63;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $80 = $63;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $80 = $63;
       } else {
        HEAP16[$pnt2$363 >> 1] = $60;
        if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $80 = $60;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $80 = $60;
       }
       $82 = ($80 << 16 >> 16) * 7 | 0;
       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;
       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256;
       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($98 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $51;
       $138 = $52 * 7 | 0;
       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256;
       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069;
       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;
       if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($103 | 0) > ($106 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $106;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $123 = $106;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $123 = $106;
      } else {
       HEAP16[$pnt2$363 >> 1] = $103;
       if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $123 = $103;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $123 = $103;
      }
      $125 = ($123 << 16 >> 16) * 7 | 0;
      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;
      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256;
      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $217 = $pnt$164 + 4 | 0;
     $218 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $217;
      $pnt2$3$lcssa = $218;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $217;
      $pnt2$363 = $218;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $224 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $226 = HEAP32[$wk$440 >> 2] | 0;
    if (($226 | 0) == ($i$338 | 0)) {
     $232 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $232;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $236 = $labelInfo + 8 | 0;
  $237 = $j$1$lcssa + -1 | 0;
  HEAP32[$236 >> 2] = $237;
  if (!$237) $$0 = 0; else {
   _memset($224 | 0, 0, $237 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $244 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $259 = $i$534 * 7 | 0;
     $262 = $labelInfo + 12 + ($258 << 2) | 0;
     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);
     $269 = $258 << 1;
     $270 = $labelInfo + 655376 + ($269 << 3) | 0;
     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);
     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;
     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);
     $281 = $258 << 2;
     $282 = $labelInfo + 131084 + ($281 << 2) | 0;
     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;
     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$236 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $311 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $314 = $i$633 << 1;
     $315 = $labelInfo + 655376 + ($314 << 3) | 0;
     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBIYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $103 = 0, $106 = 0, $11 = 0, $123 = 0, $125 = 0, $127 = 0, $131 = 0, $135 = 0, $138 = 0, $140 = 0, $144 = 0, $148 = 0, $152 = 0, $157 = 0, $159 = 0, $163 = 0, $167 = 0, $171 = 0, $177 = 0, $18 = 0, $180 = 0, $182 = 0, $186 = 0, $190 = 0, $194 = 0, $197 = 0, $2 = 0, $20 = 0, $202 = 0, $217 = 0, $218 = 0, $224 = 0, $226 = 0, $232 = 0, $236 = 0, $237 = 0, $244 = 0, $258 = 0, $259 = 0, $262 = 0, $269 = 0, $27 = 0, $270 = 0, $278 = 0, $281 = 0, $282 = 0, $286 = 0, $289 = 0, $293 = 0, $296 = 0, $3 = 0, $300 = 0, $303 = 0, $307 = 0, $311 = 0, $314 = 0, $315 = 0, $32 = 0, $321 = 0, $35 = 0, $37 = 0, $41 = 0, $45 = 0, $51 = 0, $52 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $80 = 0, $82 = 0, $84 = 0, $88 = 0, $92 = 0, $98 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $20 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = ($xsize << 1) + 8 | 0;
 L11 : do if (($3 | 0) > 1) {
  $27 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 2) + 4) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($27) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $32 = HEAP16[$pnt2$363 + ($20 << 1) >> 1] | 0;
      if ($32 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $32;
       $35 = ($32 << 16 >> 16) * 7 | 0;
       $37 = $labelInfo + 1310736 + ($35 + -7 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + 1;
       $41 = $labelInfo + 1310736 + ($35 + -6 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $i$256;
       $45 = $labelInfo + 1310736 + ($35 + -5 << 2) | 0;
       HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($35 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $51 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $55 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $56 = $55 << 16 >> 16;
      $57 = $55 << 16 >> 16 > 0;
      if ($51 << 16 >> 16 <= 0) {
       if ($57) {
        HEAP16[$pnt2$363 >> 1] = $55;
        $157 = $56 * 7 | 0;
        $159 = $labelInfo + 1310736 + ($157 + -7 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + 1;
        $163 = $labelInfo + 1310736 + ($157 + -6 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $i$256;
        $167 = $labelInfo + 1310736 + ($157 + -5 << 2) | 0;
        HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + $j$069;
        $171 = $labelInfo + 1310736 + ($157 + -3 << 2) | 0;
        if ((HEAP32[$171 >> 2] | 0) < ($i$256 | 0)) HEAP32[$171 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($157 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $177 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($177 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $177;
        $180 = ($177 << 16 >> 16) * 7 | 0;
        $182 = $labelInfo + 1310736 + ($180 + -7 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + 1;
        $186 = $labelInfo + 1310736 + ($180 + -6 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $i$256;
        $190 = $labelInfo + 1310736 + ($180 + -5 << 2) | 0;
        HEAP32[$190 >> 2] = (HEAP32[$190 >> 2] | 0) + $j$069;
        $194 = $labelInfo + 1310736 + ($180 + -3 << 2) | 0;
        if ((HEAP32[$194 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$194 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $197 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $197;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $197 << 16 >> 16;
        $202 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($202 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($202 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($202 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($202 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($202 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $197;
        break;
       }
      }
      if ($57) {
       $60 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       $63 = HEAP32[$labelInfo + 1179664 + ($56 + -1 << 2) >> 2] | 0;
       if (($60 | 0) > ($63 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $63;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$053 >> 2] = $63;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $80 = $63;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $80 = $63;
       } else {
        HEAP16[$pnt2$363 >> 1] = $60;
        if (($60 | 0) < ($63 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($63 | 0)) HEAP32[$wk$150 >> 2] = $60;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $80 = $60;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $80 = $60;
       }
       $82 = ($80 << 16 >> 16) * 7 | 0;
       $84 = $labelInfo + 1310736 + ($82 + -7 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + 1;
       $88 = $labelInfo + 1310736 + ($82 + -6 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $i$256;
       $92 = $labelInfo + 1310736 + ($82 + -5 << 2) | 0;
       HEAP32[$92 >> 2] = (HEAP32[$92 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($82 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $98 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($98 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $51;
       $138 = $52 * 7 | 0;
       $140 = $labelInfo + 1310736 + ($138 + -7 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + 1;
       $144 = $labelInfo + 1310736 + ($138 + -6 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $i$256;
       $148 = $labelInfo + 1310736 + ($138 + -5 << 2) | 0;
       HEAP32[$148 >> 2] = (HEAP32[$148 >> 2] | 0) + $j$069;
       $152 = $labelInfo + 1310736 + ($138 + -4 << 2) | 0;
       if ((HEAP32[$152 >> 2] | 0) > ($i$256 | 0)) HEAP32[$152 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($138 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $103 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
      $106 = HEAP32[$labelInfo + 1179664 + (($98 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($103 | 0) > ($106 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $106;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$246 >> 2] = $106;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $123 = $106;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $123 = $106;
      } else {
       HEAP16[$pnt2$363 >> 1] = $103;
       if (($103 | 0) < ($106 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($106 | 0)) HEAP32[$wk$343 >> 2] = $103;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $123 = $103;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $123 = $103;
      }
      $125 = ($123 << 16 >> 16) * 7 | 0;
      $127 = $labelInfo + 1310736 + ($125 + -7 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + 1;
      $131 = $labelInfo + 1310736 + ($125 + -6 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $i$256;
      $135 = $labelInfo + 1310736 + ($125 + -5 << 2) | 0;
      HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $217 = $pnt$164 + 4 | 0;
     $218 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $217;
      $pnt2$3$lcssa = $218;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $217;
      $pnt2$363 = $218;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $224 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $226 = HEAP32[$wk$440 >> 2] | 0;
    if (($226 | 0) == ($i$338 | 0)) {
     $232 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $232 = HEAP32[$labelInfo + 1179664 + ($226 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $232;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $236 = $labelInfo + 8 | 0;
  $237 = $j$1$lcssa + -1 | 0;
  HEAP32[$236 >> 2] = $237;
  if (!$237) $$0 = 0; else {
   _memset($224 | 0, 0, $237 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $237 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $244 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($244 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($244 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($244 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($244 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$236 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $258 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $259 = $i$534 * 7 | 0;
     $262 = $labelInfo + 12 + ($258 << 2) | 0;
     HEAP32[$262 >> 2] = (HEAP32[$262 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($259 << 2) >> 2] | 0);
     $269 = $258 << 1;
     $270 = $labelInfo + 655376 + ($269 << 3) | 0;
     HEAPF64[$270 >> 3] = +HEAPF64[$270 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 1 << 2) >> 2] | 0);
     $278 = $labelInfo + 655376 + (($269 | 1) << 3) | 0;
     HEAPF64[$278 >> 3] = +HEAPF64[$278 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($259 + 2 << 2) >> 2] | 0);
     $281 = $258 << 2;
     $282 = $labelInfo + 131084 + ($281 << 2) | 0;
     $286 = HEAP32[$labelInfo + 1310736 + ($259 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$282 >> 2] | 0) > ($286 | 0)) HEAP32[$282 >> 2] = $286;
     $289 = $labelInfo + 131084 + (($281 | 1) << 2) | 0;
     $293 = HEAP32[$labelInfo + 1310736 + ($259 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$289 >> 2] | 0) < ($293 | 0)) HEAP32[$289 >> 2] = $293;
     $296 = $labelInfo + 131084 + (($281 | 2) << 2) | 0;
     $300 = HEAP32[$labelInfo + 1310736 + ($259 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$296 >> 2] | 0) > ($300 | 0)) HEAP32[$296 >> 2] = $300;
     $303 = $labelInfo + 131084 + (($281 | 3) << 2) | 0;
     $307 = HEAP32[$labelInfo + 1310736 + ($259 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$303 >> 2] | 0) < ($307 | 0)) HEAP32[$303 >> 2] = $307;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$236 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $311 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $314 = $i$633 << 1;
     $315 = $labelInfo + 655376 + ($314 << 3) | 0;
     HEAPF64[$315 >> 3] = +HEAPF64[$315 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $321 = $labelInfo + 655376 + (($314 | 1) << 3) | 0;
     HEAPF64[$321 >> 3] = +HEAPF64[$321 >> 3] / +(HEAP32[$311 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$236 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = $xsize + 4 | 0;
 L11 : do if (($3 | 0) > 1) {
  $26 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 1) + 2) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($26) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$363 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$193 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $196 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $62;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $79 = $62;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$363 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $79 = $59;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $105;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $122 = $105;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$363 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $122 = $102;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } else {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $216 = $pnt$164 + 2 | 0;
     $217 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $216;
      $pnt2$363 = $217;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $223 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $225 = HEAP32[$wk$440 >> 2] | 0;
    if (($225 | 0) == ($i$338 | 0)) {
     $231 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $231;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $235 = $labelInfo + 8 | 0;
  $236 = $j$1$lcssa + -1 | 0;
  HEAP32[$235 >> 2] = $236;
  if (!$236) $$0 = 0; else {
   _memset($223 | 0, 0, $236 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $243 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $258 = $i$534 * 7 | 0;
     $261 = $labelInfo + 12 + ($257 << 2) | 0;
     HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0);
     $268 = $257 << 1;
     $269 = $labelInfo + 655376 + ($268 << 3) | 0;
     HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0);
     $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0;
     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0);
     $280 = $257 << 2;
     $281 = $labelInfo + 131084 + ($280 << 2) | 0;
     $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285;
     $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$235 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $310 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $313 = $i$633 << 1;
     $314 = $labelInfo + 655376 + ($313 << 3) | 0;
     HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0);
     $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBIC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $102 = 0, $105 = 0, $11 = 0, $122 = 0, $124 = 0, $126 = 0, $130 = 0, $134 = 0, $137 = 0, $139 = 0, $143 = 0, $147 = 0, $151 = 0, $156 = 0, $158 = 0, $162 = 0, $166 = 0, $170 = 0, $176 = 0, $179 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $19 = 0, $193 = 0, $196 = 0, $2 = 0, $201 = 0, $216 = 0, $217 = 0, $223 = 0, $225 = 0, $231 = 0, $235 = 0, $236 = 0, $243 = 0, $257 = 0, $258 = 0, $26 = 0, $261 = 0, $268 = 0, $269 = 0, $277 = 0, $280 = 0, $281 = 0, $285 = 0, $288 = 0, $292 = 0, $295 = 0, $299 = 0, $3 = 0, $302 = 0, $306 = 0, $31 = 0, $310 = 0, $313 = 0, $314 = 0, $320 = 0, $34 = 0, $36 = 0, $40 = 0, $44 = 0, $50 = 0, $51 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $62 = 0, $79 = 0, $81 = 0, $83 = 0, $87 = 0, $91 = 0, $97 = 0, $i$082 = 0, $i$176 = 0, $i$256 = 0, $i$338 = 0, $i$436 = 0, $i$534 = 0, $i$633 = 0, $j$069 = 0, $j$1$lcssa = 0, $j$139 = 0, $j$2 = 0, $k$052 = 0, $k$149 = 0, $k$245 = 0, $k$342 = 0, $pnt$073 = 0, $pnt$1$lcssa = 0, $pnt$164 = 0, $pnt1$084 = 0, $pnt1$178 = 0, $pnt2$083 = 0, $pnt2$177 = 0, $pnt2$272 = 0, $pnt2$3$lcssa = 0, $pnt2$363 = 0, $vararg_buffer = 0, $wk$053 = 0, $wk$150 = 0, $wk$246 = 0, $wk$343 = 0, $wk$440 = 0, $wk_max$0$lcssa = 0, $wk_max$071 = 0, $wk_max$1$lcssa = 0, $wk_max$158 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = ($xsize | 0) / 2 | 0;
 $1 = ($ysize | 0) / 2 | 0;
 $2 = HEAP32[$labelInfo >> 2] | 0;
 $3 = $1 + -1 | 0;
 if (($xsize | 0) > 1) {
  $i$082 = 0;
  $pnt1$084 = $2;
  $pnt2$083 = $2 + ((Math_imul($3, $0) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$083 >> 1] = 0;
   HEAP16[$pnt1$084 >> 1] = 0;
   $i$082 = $i$082 + 1 | 0;
   if (($i$082 | 0) >= ($0 | 0)) break; else {
    $pnt1$084 = $pnt1$084 + 2 | 0;
    $pnt2$083 = $pnt2$083 + 2 | 0;
   }
  }
 }
 $11 = $0 + -1 | 0;
 if (($ysize | 0) > 1) {
  $i$176 = 0;
  $pnt1$178 = $2;
  $pnt2$177 = $2 + ($11 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$177 >> 1] = 0;
   HEAP16[$pnt1$178 >> 1] = 0;
   $i$176 = $i$176 + 1 | 0;
   if (($i$176 | 0) >= ($1 | 0)) break; else {
    $pnt1$178 = $pnt1$178 + ($0 << 1) | 0;
    $pnt2$177 = $pnt2$177 + ($0 << 1) | 0;
   }
  }
 }
 $18 = $labelInfo + 1179664 | 0;
 $19 = 0 - $0 | 0;
 $$sum1 = 1 - $0 | 0;
 $$sum2 = ~$0;
 $$sum = $xsize + 4 | 0;
 L11 : do if (($3 | 0) > 1) {
  $26 = ($11 | 0) > 1;
  $j$069 = 1;
  $pnt$073 = $image + (($xsize << 1) + 2) | 0;
  $pnt2$272 = $2 + ($0 + 1 << 1) | 0;
  $wk_max$071 = 0;
  L13 : while (1) {
   if ($26) {
    $i$256 = 1;
    $pnt$164 = $pnt$073;
    $pnt2$363 = $pnt2$272;
    $wk_max$158 = $wk_max$071;
    while (1) {
     do if ((HEAPU8[$pnt$164 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$363 >> 1] = 0;
      $wk_max$2 = $wk_max$158;
     } else {
      $31 = HEAP16[$pnt2$363 + ($19 << 1) >> 1] | 0;
      if ($31 << 16 >> 16 > 0) {
       HEAP16[$pnt2$363 >> 1] = $31;
       $34 = ($31 << 16 >> 16) * 7 | 0;
       $36 = $labelInfo + 1310736 + ($34 + -7 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + 1;
       $40 = $labelInfo + 1310736 + ($34 + -6 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $i$256;
       $44 = $labelInfo + 1310736 + ($34 + -5 << 2) | 0;
       HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($34 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $50 = HEAP16[$pnt2$363 + ($$sum1 << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $54 = HEAP16[$pnt2$363 + ($$sum2 << 1) >> 1] | 0;
      $55 = $54 << 16 >> 16;
      $56 = $54 << 16 >> 16 > 0;
      if ($50 << 16 >> 16 <= 0) {
       if ($56) {
        HEAP16[$pnt2$363 >> 1] = $54;
        $156 = $55 * 7 | 0;
        $158 = $labelInfo + 1310736 + ($156 + -7 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + 1;
        $162 = $labelInfo + 1310736 + ($156 + -6 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $i$256;
        $166 = $labelInfo + 1310736 + ($156 + -5 << 2) | 0;
        HEAP32[$166 >> 2] = (HEAP32[$166 >> 2] | 0) + $j$069;
        $170 = $labelInfo + 1310736 + ($156 + -3 << 2) | 0;
        if ((HEAP32[$170 >> 2] | 0) < ($i$256 | 0)) HEAP32[$170 >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($156 + -1 << 2) >> 2] = $j$069;
        $wk_max$2 = $wk_max$158;
        break;
       }
       $176 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
       if ($176 << 16 >> 16 > 0) {
        HEAP16[$pnt2$363 >> 1] = $176;
        $179 = ($176 << 16 >> 16) * 7 | 0;
        $181 = $labelInfo + 1310736 + ($179 + -7 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + 1;
        $185 = $labelInfo + 1310736 + ($179 + -6 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $i$256;
        $189 = $labelInfo + 1310736 + ($179 + -5 << 2) | 0;
        HEAP32[$189 >> 2] = (HEAP32[$189 >> 2] | 0) + $j$069;
        $193 = $labelInfo + 1310736 + ($179 + -3 << 2) | 0;
        if ((HEAP32[$193 >> 2] | 0) >= ($i$256 | 0)) {
         $wk_max$2 = $wk_max$158;
         break;
        }
        HEAP32[$193 >> 2] = $i$256;
        $wk_max$2 = $wk_max$158;
        break;
       } else {
        $196 = $wk_max$158 + 1 | 0;
        if (($wk_max$158 | 0) > 32767) break L13;
        HEAP16[$pnt2$363 >> 1] = $196;
        HEAP32[$labelInfo + 1179664 + ($wk_max$158 << 2) >> 2] = $196 << 16 >> 16;
        $201 = $wk_max$158 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($201 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($201 + 1 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 2 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($201 + 3 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 4 << 2) >> 2] = $i$256;
        HEAP32[$labelInfo + 1310736 + ($201 + 5 << 2) >> 2] = $j$069;
        HEAP32[$labelInfo + 1310736 + ($201 + 6 << 2) >> 2] = $j$069;
        $wk_max$2 = $196;
        break;
       }
      }
      if ($56) {
       $59 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       $62 = HEAP32[$labelInfo + 1179664 + ($55 + -1 << 2) >> 2] | 0;
       if (($59 | 0) > ($62 | 0)) {
        HEAP16[$pnt2$363 >> 1] = $62;
        if (($wk_max$158 | 0) > 0) {
         $k$052 = 0;
         $wk$053 = $18;
         while (1) {
          if ((HEAP32[$wk$053 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$053 >> 2] = $62;
          $k$052 = $k$052 + 1 | 0;
          if (($k$052 | 0) >= ($wk_max$158 | 0)) {
           $79 = $62;
           break;
          } else $wk$053 = $wk$053 + 4 | 0;
         }
        } else $79 = $62;
       } else {
        HEAP16[$pnt2$363 >> 1] = $59;
        if (($59 | 0) < ($62 | 0) & ($wk_max$158 | 0) > 0) {
         $k$149 = 0;
         $wk$150 = $18;
         while (1) {
          if ((HEAP32[$wk$150 >> 2] | 0) == ($62 | 0)) HEAP32[$wk$150 >> 2] = $59;
          $k$149 = $k$149 + 1 | 0;
          if (($k$149 | 0) >= ($wk_max$158 | 0)) {
           $79 = $59;
           break;
          } else $wk$150 = $wk$150 + 4 | 0;
         }
        } else $79 = $59;
       }
       $81 = ($79 << 16 >> 16) * 7 | 0;
       $83 = $labelInfo + 1310736 + ($81 + -7 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + 1;
       $87 = $labelInfo + 1310736 + ($81 + -6 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $i$256;
       $91 = $labelInfo + 1310736 + ($81 + -5 << 2) | 0;
       HEAP32[$91 >> 2] = (HEAP32[$91 >> 2] | 0) + $j$069;
       HEAP32[$labelInfo + 1310736 + ($81 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $97 = HEAP16[$pnt2$363 + -2 >> 1] | 0;
      if ($97 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$363 >> 1] = $50;
       $137 = $51 * 7 | 0;
       $139 = $labelInfo + 1310736 + ($137 + -7 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + 1;
       $143 = $labelInfo + 1310736 + ($137 + -6 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $i$256;
       $147 = $labelInfo + 1310736 + ($137 + -5 << 2) | 0;
       HEAP32[$147 >> 2] = (HEAP32[$147 >> 2] | 0) + $j$069;
       $151 = $labelInfo + 1310736 + ($137 + -4 << 2) | 0;
       if ((HEAP32[$151 >> 2] | 0) > ($i$256 | 0)) HEAP32[$151 >> 2] = $i$256;
       HEAP32[$labelInfo + 1310736 + ($137 + -1 << 2) >> 2] = $j$069;
       $wk_max$2 = $wk_max$158;
       break;
      }
      $102 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
      $105 = HEAP32[$labelInfo + 1179664 + (($97 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($102 | 0) > ($105 | 0)) {
       HEAP16[$pnt2$363 >> 1] = $105;
       if (($wk_max$158 | 0) > 0) {
        $k$245 = 0;
        $wk$246 = $18;
        while (1) {
         if ((HEAP32[$wk$246 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$246 >> 2] = $105;
         $k$245 = $k$245 + 1 | 0;
         if (($k$245 | 0) >= ($wk_max$158 | 0)) {
          $122 = $105;
          break;
         } else $wk$246 = $wk$246 + 4 | 0;
        }
       } else $122 = $105;
      } else {
       HEAP16[$pnt2$363 >> 1] = $102;
       if (($102 | 0) < ($105 | 0) & ($wk_max$158 | 0) > 0) {
        $k$342 = 0;
        $wk$343 = $18;
        while (1) {
         if ((HEAP32[$wk$343 >> 2] | 0) == ($105 | 0)) HEAP32[$wk$343 >> 2] = $102;
         $k$342 = $k$342 + 1 | 0;
         if (($k$342 | 0) >= ($wk_max$158 | 0)) {
          $122 = $102;
          break;
         } else $wk$343 = $wk$343 + 4 | 0;
        }
       } else $122 = $102;
      }
      $124 = ($122 << 16 >> 16) * 7 | 0;
      $126 = $labelInfo + 1310736 + ($124 + -7 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + 1;
      $130 = $labelInfo + 1310736 + ($124 + -6 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $i$256;
      $134 = $labelInfo + 1310736 + ($124 + -5 << 2) | 0;
      HEAP32[$134 >> 2] = (HEAP32[$134 >> 2] | 0) + $j$069;
      $wk_max$2 = $wk_max$158;
     } while (0);
     $i$256 = $i$256 + 1 | 0;
     $216 = $pnt$164 + 2 | 0;
     $217 = $pnt2$363 + 2 | 0;
     if (($i$256 | 0) >= ($11 | 0)) {
      $pnt$1$lcssa = $216;
      $pnt2$3$lcssa = $217;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$164 = $216;
      $pnt2$363 = $217;
      $wk_max$158 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$073;
    $pnt2$3$lcssa = $pnt2$272;
    $wk_max$1$lcssa = $wk_max$071;
   }
   $j$069 = $j$069 + 1 | 0;
   if (($j$069 | 0) >= ($3 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$073 = $pnt$1$lcssa + $$sum | 0;
    $pnt2$272 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$071 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $223 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$338 = 1;
   $j$139 = 1;
   $wk$440 = $18;
   while (1) {
    $225 = HEAP32[$wk$440 >> 2] | 0;
    if (($225 | 0) == ($i$338 | 0)) {
     $231 = $j$139;
     $j$2 = $j$139 + 1 | 0;
    } else {
     $231 = HEAP32[$labelInfo + 1179664 + ($225 + -1 << 2) >> 2] | 0;
     $j$2 = $j$139;
    }
    HEAP32[$wk$440 >> 2] = $231;
    if (($i$338 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$338 = $i$338 + 1 | 0;
     $j$139 = $j$2;
     $wk$440 = $wk$440 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $235 = $labelInfo + 8 | 0;
  $236 = $j$1$lcssa + -1 | 0;
  HEAP32[$235 >> 2] = $236;
  if (!$236) $$0 = 0; else {
   _memset($223 | 0, 0, $236 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $236 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$436 = 0;
    do {
     $243 = $i$436 << 2;
     HEAP32[$labelInfo + 131084 + ($243 << 2) >> 2] = $0;
     HEAP32[$labelInfo + 131084 + (($243 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($243 | 2) << 2) >> 2] = $1;
     HEAP32[$labelInfo + 131084 + (($243 | 3) << 2) >> 2] = 0;
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$235 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$534 = 0;
    do {
     $257 = (HEAP32[$labelInfo + 1179664 + ($i$534 << 2) >> 2] | 0) + -1 | 0;
     $258 = $i$534 * 7 | 0;
     $261 = $labelInfo + 12 + ($257 << 2) | 0;
     HEAP32[$261 >> 2] = (HEAP32[$261 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($258 << 2) >> 2] | 0);
     $268 = $257 << 1;
     $269 = $labelInfo + 655376 + ($268 << 3) | 0;
     HEAPF64[$269 >> 3] = +HEAPF64[$269 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 1 << 2) >> 2] | 0);
     $277 = $labelInfo + 655376 + (($268 | 1) << 3) | 0;
     HEAPF64[$277 >> 3] = +HEAPF64[$277 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($258 + 2 << 2) >> 2] | 0);
     $280 = $257 << 2;
     $281 = $labelInfo + 131084 + ($280 << 2) | 0;
     $285 = HEAP32[$labelInfo + 1310736 + ($258 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$281 >> 2] | 0) > ($285 | 0)) HEAP32[$281 >> 2] = $285;
     $288 = $labelInfo + 131084 + (($280 | 1) << 2) | 0;
     $292 = HEAP32[$labelInfo + 1310736 + ($258 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$288 >> 2] | 0) < ($292 | 0)) HEAP32[$288 >> 2] = $292;
     $295 = $labelInfo + 131084 + (($280 | 2) << 2) | 0;
     $299 = HEAP32[$labelInfo + 1310736 + ($258 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$295 >> 2] | 0) > ($299 | 0)) HEAP32[$295 >> 2] = $299;
     $302 = $labelInfo + 131084 + (($280 | 3) << 2) | 0;
     $306 = HEAP32[$labelInfo + 1310736 + ($258 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$302 >> 2] | 0) < ($306 | 0)) HEAP32[$302 >> 2] = $306;
     $i$534 = $i$534 + 1 | 0;
    } while (($i$534 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$235 >> 2] | 0) > 0) {
    $i$633 = 0;
    do {
     $310 = $labelInfo + 12 + ($i$633 << 2) | 0;
     $313 = $i$633 << 1;
     $314 = $labelInfo + 655376 + ($313 << 3) | 0;
     HEAPF64[$314 >> 3] = +HEAPF64[$314 >> 3] / +(HEAP32[$310 >> 2] | 0);
     $320 = $labelInfo + 655376 + (($313 | 1) << 3) | 0;
     HEAPF64[$320 >> 3] = +HEAPF64[$320 >> 3] / +(HEAP32[$310 >> 2] | 0);
     $i$633 = $i$633 + 1 | 0;
    } while (($i$633 | 0) < (HEAP32[$235 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($17 << 1) | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($23) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($29 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $29;
       $32 = ($29 << 16 >> 16) * 7 | 0;
       $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0;
       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1;
       $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0;
       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255;
       $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $49 = $48 << 16 >> 16;
      $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $53 = $52 << 16 >> 16;
      $54 = $52 << 16 >> 16 > 0;
      if ($48 << 16 >> 16 <= 0) {
       if ($54) {
        HEAP16[$pnt2$362 >> 1] = $52;
        $154 = $53 * 7 | 0;
        $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0;
        HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1;
        $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0;
        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255;
        $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068;
        $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0;
        if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($174 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $174;
        $177 = ($174 << 16 >> 16) * 7 | 0;
        $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1;
        $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0;
        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255;
        $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068;
        $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0;
        if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$191 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $194 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $194;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16;
        $199 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $194;
        break;
       }
      }
      if ($54) {
       $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;
       $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
       if (($57 | 0) > ($60 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $60;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $77 = $60;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $77 = $60;
       } else {
        HEAP16[$pnt2$362 >> 1] = $57;
        if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $77 = $57;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $77 = $57;
       }
       $79 = ($77 << 16 >> 16) * 7 | 0;
       $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0;
       HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1;
       $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0;
       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255;
       $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($95 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $48;
       $135 = $49 * 7 | 0;
       $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
       HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
       $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255;
       $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068;
       $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0;
       if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;
      $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($100 | 0) > ($103 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $103;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $120 = $103;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $120 = $103;
      } else {
       HEAP16[$pnt2$362 >> 1] = $100;
       if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $120 = $100;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $120 = $100;
      }
      $122 = ($120 << 16 >> 16) * 7 | 0;
      $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0;
      HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1;
      $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0;
      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255;
      $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $214 = $pnt$163 + 2 | 0;
     $215 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $214;
      $pnt2$3$lcssa = $215;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $214;
      $pnt2$362 = $215;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $221 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $223 = HEAP32[$wk$439 >> 2] | 0;
    if (($223 | 0) == ($i$337 | 0)) {
     $229 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $229;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $233 = $labelInfo + 8 | 0;
  $234 = $j$1$lcssa + -1 | 0;
  HEAP32[$233 >> 2] = $234;
  if (!$234) $$0 = 0; else {
   _memset($221 | 0, 0, $234 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $241 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $256 = $i$533 * 7 | 0;
     $259 = $labelInfo + 12 + ($255 << 2) | 0;
     HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0);
     $266 = $255 << 1;
     $267 = $labelInfo + 655376 + ($266 << 3) | 0;
     HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0);
     $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0);
     $278 = $255 << 2;
     $279 = $labelInfo + 131084 + ($278 << 2) | 0;
     $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283;
     $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0;
     $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290;
     $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$233 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $308 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $311 = $i$632 << 1;
     $312 = $labelInfo + 655376 + ($311 << 3) | 0;
     HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0);
     $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0;
     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBRCY($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $100 = 0, $103 = 0, $120 = 0, $122 = 0, $124 = 0, $128 = 0, $132 = 0, $135 = 0, $137 = 0, $141 = 0, $145 = 0, $149 = 0, $154 = 0, $156 = 0, $16 = 0, $160 = 0, $164 = 0, $168 = 0, $17 = 0, $174 = 0, $177 = 0, $179 = 0, $18 = 0, $183 = 0, $187 = 0, $191 = 0, $194 = 0, $199 = 0, $214 = 0, $215 = 0, $221 = 0, $223 = 0, $229 = 0, $23 = 0, $233 = 0, $234 = 0, $241 = 0, $255 = 0, $256 = 0, $259 = 0, $266 = 0, $267 = 0, $275 = 0, $278 = 0, $279 = 0, $283 = 0, $286 = 0, $29 = 0, $290 = 0, $293 = 0, $297 = 0, $300 = 0, $304 = 0, $308 = 0, $311 = 0, $312 = 0, $318 = 0, $32 = 0, $34 = 0, $38 = 0, $42 = 0, $48 = 0, $49 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $77 = 0, $79 = 0, $81 = 0, $85 = 0, $89 = 0, $9 = 0, $95 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($17 << 1) | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($23) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 + 1 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $29 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($29 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $29;
       $32 = ($29 << 16 >> 16) * 7 | 0;
       $34 = $labelInfo + 1310736 + ($32 + -7 << 2) | 0;
       HEAP32[$34 >> 2] = (HEAP32[$34 >> 2] | 0) + 1;
       $38 = $labelInfo + 1310736 + ($32 + -6 << 2) | 0;
       HEAP32[$38 >> 2] = (HEAP32[$38 >> 2] | 0) + $i$255;
       $42 = $labelInfo + 1310736 + ($32 + -5 << 2) | 0;
       HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($32 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $48 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $49 = $48 << 16 >> 16;
      $52 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $53 = $52 << 16 >> 16;
      $54 = $52 << 16 >> 16 > 0;
      if ($48 << 16 >> 16 <= 0) {
       if ($54) {
        HEAP16[$pnt2$362 >> 1] = $52;
        $154 = $53 * 7 | 0;
        $156 = $labelInfo + 1310736 + ($154 + -7 << 2) | 0;
        HEAP32[$156 >> 2] = (HEAP32[$156 >> 2] | 0) + 1;
        $160 = $labelInfo + 1310736 + ($154 + -6 << 2) | 0;
        HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + $i$255;
        $164 = $labelInfo + 1310736 + ($154 + -5 << 2) | 0;
        HEAP32[$164 >> 2] = (HEAP32[$164 >> 2] | 0) + $j$068;
        $168 = $labelInfo + 1310736 + ($154 + -3 << 2) | 0;
        if ((HEAP32[$168 >> 2] | 0) < ($i$255 | 0)) HEAP32[$168 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($154 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $174 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($174 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $174;
        $177 = ($174 << 16 >> 16) * 7 | 0;
        $179 = $labelInfo + 1310736 + ($177 + -7 << 2) | 0;
        HEAP32[$179 >> 2] = (HEAP32[$179 >> 2] | 0) + 1;
        $183 = $labelInfo + 1310736 + ($177 + -6 << 2) | 0;
        HEAP32[$183 >> 2] = (HEAP32[$183 >> 2] | 0) + $i$255;
        $187 = $labelInfo + 1310736 + ($177 + -5 << 2) | 0;
        HEAP32[$187 >> 2] = (HEAP32[$187 >> 2] | 0) + $j$068;
        $191 = $labelInfo + 1310736 + ($177 + -3 << 2) | 0;
        if ((HEAP32[$191 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$191 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $194 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $194;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $194 << 16 >> 16;
        $199 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($199 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($199 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($199 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($199 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($199 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $194;
        break;
       }
      }
      if ($54) {
       $57 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;
       $60 = HEAP32[$labelInfo + 1179664 + ($53 + -1 << 2) >> 2] | 0;
       if (($57 | 0) > ($60 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $60;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($57 | 0)) HEAP32[$wk$052 >> 2] = $60;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $77 = $60;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $77 = $60;
       } else {
        HEAP16[$pnt2$362 >> 1] = $57;
        if (($57 | 0) < ($60 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($60 | 0)) HEAP32[$wk$149 >> 2] = $57;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $77 = $57;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $77 = $57;
       }
       $79 = ($77 << 16 >> 16) * 7 | 0;
       $81 = $labelInfo + 1310736 + ($79 + -7 << 2) | 0;
       HEAP32[$81 >> 2] = (HEAP32[$81 >> 2] | 0) + 1;
       $85 = $labelInfo + 1310736 + ($79 + -6 << 2) | 0;
       HEAP32[$85 >> 2] = (HEAP32[$85 >> 2] | 0) + $i$255;
       $89 = $labelInfo + 1310736 + ($79 + -5 << 2) | 0;
       HEAP32[$89 >> 2] = (HEAP32[$89 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($79 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $95 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($95 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $48;
       $135 = $49 * 7 | 0;
       $137 = $labelInfo + 1310736 + ($135 + -7 << 2) | 0;
       HEAP32[$137 >> 2] = (HEAP32[$137 >> 2] | 0) + 1;
       $141 = $labelInfo + 1310736 + ($135 + -6 << 2) | 0;
       HEAP32[$141 >> 2] = (HEAP32[$141 >> 2] | 0) + $i$255;
       $145 = $labelInfo + 1310736 + ($135 + -5 << 2) | 0;
       HEAP32[$145 >> 2] = (HEAP32[$145 >> 2] | 0) + $j$068;
       $149 = $labelInfo + 1310736 + ($135 + -4 << 2) | 0;
       if ((HEAP32[$149 >> 2] | 0) > ($i$255 | 0)) HEAP32[$149 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($135 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $100 = HEAP32[$labelInfo + 1179664 + ($49 + -1 << 2) >> 2] | 0;
      $103 = HEAP32[$labelInfo + 1179664 + (($95 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($100 | 0) > ($103 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $103;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($100 | 0)) HEAP32[$wk$245 >> 2] = $103;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $120 = $103;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $120 = $103;
      } else {
       HEAP16[$pnt2$362 >> 1] = $100;
       if (($100 | 0) < ($103 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($103 | 0)) HEAP32[$wk$342 >> 2] = $100;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $120 = $100;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $120 = $100;
      }
      $122 = ($120 << 16 >> 16) * 7 | 0;
      $124 = $labelInfo + 1310736 + ($122 + -7 << 2) | 0;
      HEAP32[$124 >> 2] = (HEAP32[$124 >> 2] | 0) + 1;
      $128 = $labelInfo + 1310736 + ($122 + -6 << 2) | 0;
      HEAP32[$128 >> 2] = (HEAP32[$128 >> 2] | 0) + $i$255;
      $132 = $labelInfo + 1310736 + ($122 + -5 << 2) | 0;
      HEAP32[$132 >> 2] = (HEAP32[$132 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $214 = $pnt$163 + 2 | 0;
     $215 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $214;
      $pnt2$3$lcssa = $215;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $214;
      $pnt2$362 = $215;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $221 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $223 = HEAP32[$wk$439 >> 2] | 0;
    if (($223 | 0) == ($i$337 | 0)) {
     $229 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $229 = HEAP32[$labelInfo + 1179664 + ($223 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $229;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $233 = $labelInfo + 8 | 0;
  $234 = $j$1$lcssa + -1 | 0;
  HEAP32[$233 >> 2] = $234;
  if (!$234) $$0 = 0; else {
   _memset($221 | 0, 0, $234 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $234 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $241 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($241 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($241 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($241 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($241 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$233 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $255 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $256 = $i$533 * 7 | 0;
     $259 = $labelInfo + 12 + ($255 << 2) | 0;
     HEAP32[$259 >> 2] = (HEAP32[$259 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($256 << 2) >> 2] | 0);
     $266 = $255 << 1;
     $267 = $labelInfo + 655376 + ($266 << 3) | 0;
     HEAPF64[$267 >> 3] = +HEAPF64[$267 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 1 << 2) >> 2] | 0);
     $275 = $labelInfo + 655376 + (($266 | 1) << 3) | 0;
     HEAPF64[$275 >> 3] = +HEAPF64[$275 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($256 + 2 << 2) >> 2] | 0);
     $278 = $255 << 2;
     $279 = $labelInfo + 131084 + ($278 << 2) | 0;
     $283 = HEAP32[$labelInfo + 1310736 + ($256 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$279 >> 2] | 0) > ($283 | 0)) HEAP32[$279 >> 2] = $283;
     $286 = $labelInfo + 131084 + (($278 | 1) << 2) | 0;
     $290 = HEAP32[$labelInfo + 1310736 + ($256 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$286 >> 2] | 0) < ($290 | 0)) HEAP32[$286 >> 2] = $290;
     $293 = $labelInfo + 131084 + (($278 | 2) << 2) | 0;
     $297 = HEAP32[$labelInfo + 1310736 + ($256 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$293 >> 2] | 0) > ($297 | 0)) HEAP32[$293 >> 2] = $297;
     $300 = $labelInfo + 131084 + (($278 | 3) << 2) | 0;
     $304 = HEAP32[$labelInfo + 1310736 + ($256 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$300 >> 2] | 0) < ($304 | 0)) HEAP32[$300 >> 2] = $304;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$233 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $308 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $311 = $i$632 << 1;
     $312 = $labelInfo + 655376 + ($311 << 3) | 0;
     HEAPF64[$312 >> 3] = +HEAPF64[$312 >> 3] / +(HEAP32[$308 >> 2] | 0);
     $318 = $labelInfo + 655376 + (($311 | 1) << 3) | 0;
     HEAPF64[$318 >> 3] = +HEAPF64[$318 >> 3] / +(HEAP32[$308 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$233 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($17 << 1) | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($23) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($28 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $28;
       $31 = ($28 << 16 >> 16) * 7 | 0;
       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;
       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;
       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255;
       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $48 = $47 << 16 >> 16;
      $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $53 = $51 << 16 >> 16 > 0;
      if ($47 << 16 >> 16 <= 0) {
       if ($53) {
        HEAP16[$pnt2$362 >> 1] = $51;
        $153 = $52 * 7 | 0;
        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255;
        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068;
        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;
        if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($173 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $173;
        $176 = ($173 << 16 >> 16) * 7 | 0;
        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;
        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255;
        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068;
        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;
        if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$190 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $193 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $193;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16;
        $198 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $193;
        break;
       }
      }
      if ($53) {
       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       if (($56 | 0) > ($59 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $59;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $76 = $59;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $76 = $59;
       } else {
        HEAP16[$pnt2$362 >> 1] = $56;
        if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $76 = $56;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $76 = $56;
       }
       $78 = ($76 << 16 >> 16) * 7 | 0;
       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;
       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;
       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255;
       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($94 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $47;
       $134 = $48 * 7 | 0;
       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255;
       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068;
       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;
       if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($99 | 0) > ($102 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $102;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $119 = $102;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $119 = $102;
      } else {
       HEAP16[$pnt2$362 >> 1] = $99;
       if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $119 = $99;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $119 = $99;
      }
      $121 = ($119 << 16 >> 16) * 7 | 0;
      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;
      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;
      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255;
      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $213 = $pnt$163 + 2 | 0;
     $214 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $213;
      $pnt2$3$lcssa = $214;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $213;
      $pnt2$362 = $214;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $220 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $222 = HEAP32[$wk$439 >> 2] | 0;
    if (($222 | 0) == ($i$337 | 0)) {
     $228 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $228;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $232 = $labelInfo + 8 | 0;
  $233 = $j$1$lcssa + -1 | 0;
  HEAP32[$232 >> 2] = $233;
  if (!$233) $$0 = 0; else {
   _memset($220 | 0, 0, $233 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $240 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $255 = $i$533 * 7 | 0;
     $258 = $labelInfo + 12 + ($254 << 2) | 0;
     HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0);
     $265 = $254 << 1;
     $266 = $labelInfo + 655376 + ($265 << 3) | 0;
     HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0);
     $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0;
     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0);
     $277 = $254 << 2;
     $278 = $labelInfo + 131084 + ($277 << 2) | 0;
     $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282;
     $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0;
     $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289;
     $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$232 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $307 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $310 = $i$632 << 1;
     $311 = $labelInfo + 655376 + ($310 << 3) | 0;
     HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0);
     $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0;
     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBRYC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $102 = 0, $119 = 0, $121 = 0, $123 = 0, $127 = 0, $131 = 0, $134 = 0, $136 = 0, $140 = 0, $144 = 0, $148 = 0, $153 = 0, $155 = 0, $159 = 0, $16 = 0, $163 = 0, $167 = 0, $17 = 0, $173 = 0, $176 = 0, $178 = 0, $18 = 0, $182 = 0, $186 = 0, $190 = 0, $193 = 0, $198 = 0, $213 = 0, $214 = 0, $220 = 0, $222 = 0, $228 = 0, $23 = 0, $232 = 0, $233 = 0, $240 = 0, $254 = 0, $255 = 0, $258 = 0, $265 = 0, $266 = 0, $274 = 0, $277 = 0, $278 = 0, $28 = 0, $282 = 0, $285 = 0, $289 = 0, $292 = 0, $296 = 0, $299 = 0, $303 = 0, $307 = 0, $31 = 0, $310 = 0, $311 = 0, $317 = 0, $33 = 0, $37 = 0, $41 = 0, $47 = 0, $48 = 0, $51 = 0, $52 = 0, $53 = 0, $56 = 0, $59 = 0, $76 = 0, $78 = 0, $80 = 0, $84 = 0, $88 = 0, $9 = 0, $94 = 0, $99 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $23 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + ($17 << 1) | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($23) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $28 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($28 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $28;
       $31 = ($28 << 16 >> 16) * 7 | 0;
       $33 = $labelInfo + 1310736 + ($31 + -7 << 2) | 0;
       HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;
       $37 = $labelInfo + 1310736 + ($31 + -6 << 2) | 0;
       HEAP32[$37 >> 2] = (HEAP32[$37 >> 2] | 0) + $i$255;
       $41 = $labelInfo + 1310736 + ($31 + -5 << 2) | 0;
       HEAP32[$41 >> 2] = (HEAP32[$41 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($31 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $47 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $48 = $47 << 16 >> 16;
      $51 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $52 = $51 << 16 >> 16;
      $53 = $51 << 16 >> 16 > 0;
      if ($47 << 16 >> 16 <= 0) {
       if ($53) {
        HEAP16[$pnt2$362 >> 1] = $51;
        $153 = $52 * 7 | 0;
        $155 = $labelInfo + 1310736 + ($153 + -7 << 2) | 0;
        HEAP32[$155 >> 2] = (HEAP32[$155 >> 2] | 0) + 1;
        $159 = $labelInfo + 1310736 + ($153 + -6 << 2) | 0;
        HEAP32[$159 >> 2] = (HEAP32[$159 >> 2] | 0) + $i$255;
        $163 = $labelInfo + 1310736 + ($153 + -5 << 2) | 0;
        HEAP32[$163 >> 2] = (HEAP32[$163 >> 2] | 0) + $j$068;
        $167 = $labelInfo + 1310736 + ($153 + -3 << 2) | 0;
        if ((HEAP32[$167 >> 2] | 0) < ($i$255 | 0)) HEAP32[$167 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($153 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $173 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($173 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $173;
        $176 = ($173 << 16 >> 16) * 7 | 0;
        $178 = $labelInfo + 1310736 + ($176 + -7 << 2) | 0;
        HEAP32[$178 >> 2] = (HEAP32[$178 >> 2] | 0) + 1;
        $182 = $labelInfo + 1310736 + ($176 + -6 << 2) | 0;
        HEAP32[$182 >> 2] = (HEAP32[$182 >> 2] | 0) + $i$255;
        $186 = $labelInfo + 1310736 + ($176 + -5 << 2) | 0;
        HEAP32[$186 >> 2] = (HEAP32[$186 >> 2] | 0) + $j$068;
        $190 = $labelInfo + 1310736 + ($176 + -3 << 2) | 0;
        if ((HEAP32[$190 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$190 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $193 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $193;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $193 << 16 >> 16;
        $198 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($198 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($198 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($198 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($198 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($198 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $193;
        break;
       }
      }
      if ($53) {
       $56 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
       $59 = HEAP32[$labelInfo + 1179664 + ($52 + -1 << 2) >> 2] | 0;
       if (($56 | 0) > ($59 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $59;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($56 | 0)) HEAP32[$wk$052 >> 2] = $59;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $76 = $59;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $76 = $59;
       } else {
        HEAP16[$pnt2$362 >> 1] = $56;
        if (($56 | 0) < ($59 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($59 | 0)) HEAP32[$wk$149 >> 2] = $56;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $76 = $56;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $76 = $56;
       }
       $78 = ($76 << 16 >> 16) * 7 | 0;
       $80 = $labelInfo + 1310736 + ($78 + -7 << 2) | 0;
       HEAP32[$80 >> 2] = (HEAP32[$80 >> 2] | 0) + 1;
       $84 = $labelInfo + 1310736 + ($78 + -6 << 2) | 0;
       HEAP32[$84 >> 2] = (HEAP32[$84 >> 2] | 0) + $i$255;
       $88 = $labelInfo + 1310736 + ($78 + -5 << 2) | 0;
       HEAP32[$88 >> 2] = (HEAP32[$88 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($78 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $94 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($94 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $47;
       $134 = $48 * 7 | 0;
       $136 = $labelInfo + 1310736 + ($134 + -7 << 2) | 0;
       HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 1;
       $140 = $labelInfo + 1310736 + ($134 + -6 << 2) | 0;
       HEAP32[$140 >> 2] = (HEAP32[$140 >> 2] | 0) + $i$255;
       $144 = $labelInfo + 1310736 + ($134 + -5 << 2) | 0;
       HEAP32[$144 >> 2] = (HEAP32[$144 >> 2] | 0) + $j$068;
       $148 = $labelInfo + 1310736 + ($134 + -4 << 2) | 0;
       if ((HEAP32[$148 >> 2] | 0) > ($i$255 | 0)) HEAP32[$148 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($134 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $99 = HEAP32[$labelInfo + 1179664 + ($48 + -1 << 2) >> 2] | 0;
      $102 = HEAP32[$labelInfo + 1179664 + (($94 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($99 | 0) > ($102 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $102;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($99 | 0)) HEAP32[$wk$245 >> 2] = $102;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $119 = $102;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $119 = $102;
      } else {
       HEAP16[$pnt2$362 >> 1] = $99;
       if (($99 | 0) < ($102 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($102 | 0)) HEAP32[$wk$342 >> 2] = $99;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $119 = $99;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $119 = $99;
      }
      $121 = ($119 << 16 >> 16) * 7 | 0;
      $123 = $labelInfo + 1310736 + ($121 + -7 << 2) | 0;
      HEAP32[$123 >> 2] = (HEAP32[$123 >> 2] | 0) + 1;
      $127 = $labelInfo + 1310736 + ($121 + -6 << 2) | 0;
      HEAP32[$127 >> 2] = (HEAP32[$127 >> 2] | 0) + $i$255;
      $131 = $labelInfo + 1310736 + ($121 + -5 << 2) | 0;
      HEAP32[$131 >> 2] = (HEAP32[$131 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $213 = $pnt$163 + 2 | 0;
     $214 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $213;
      $pnt2$3$lcssa = $214;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $213;
      $pnt2$362 = $214;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 4 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $220 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $222 = HEAP32[$wk$439 >> 2] | 0;
    if (($222 | 0) == ($i$337 | 0)) {
     $228 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $228 = HEAP32[$labelInfo + 1179664 + ($222 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $228;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $232 = $labelInfo + 8 | 0;
  $233 = $j$1$lcssa + -1 | 0;
  HEAP32[$232 >> 2] = $233;
  if (!$233) $$0 = 0; else {
   _memset($220 | 0, 0, $233 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $233 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $240 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($240 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($240 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($240 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($240 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$232 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $254 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $255 = $i$533 * 7 | 0;
     $258 = $labelInfo + 12 + ($254 << 2) | 0;
     HEAP32[$258 >> 2] = (HEAP32[$258 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($255 << 2) >> 2] | 0);
     $265 = $254 << 1;
     $266 = $labelInfo + 655376 + ($265 << 3) | 0;
     HEAPF64[$266 >> 3] = +HEAPF64[$266 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 1 << 2) >> 2] | 0);
     $274 = $labelInfo + 655376 + (($265 | 1) << 3) | 0;
     HEAPF64[$274 >> 3] = +HEAPF64[$274 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($255 + 2 << 2) >> 2] | 0);
     $277 = $254 << 2;
     $278 = $labelInfo + 131084 + ($277 << 2) | 0;
     $282 = HEAP32[$labelInfo + 1310736 + ($255 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$278 >> 2] | 0) > ($282 | 0)) HEAP32[$278 >> 2] = $282;
     $285 = $labelInfo + 131084 + (($277 | 1) << 2) | 0;
     $289 = HEAP32[$labelInfo + 1310736 + ($255 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$285 >> 2] | 0) < ($289 | 0)) HEAP32[$285 >> 2] = $289;
     $292 = $labelInfo + 131084 + (($277 | 2) << 2) | 0;
     $296 = HEAP32[$labelInfo + 1310736 + ($255 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$292 >> 2] | 0) > ($296 | 0)) HEAP32[$292 >> 2] = $296;
     $299 = $labelInfo + 131084 + (($277 | 3) << 2) | 0;
     $303 = HEAP32[$labelInfo + 1310736 + ($255 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$299 >> 2] | 0) < ($303 | 0)) HEAP32[$299 >> 2] = $303;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$232 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $307 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $310 = $i$632 << 1;
     $311 = $labelInfo + 655376 + ($310 << 3) | 0;
     HEAPF64[$311 >> 3] = +HEAPF64[$311 >> 3] / +(HEAP32[$307 >> 2] | 0);
     $317 = $labelInfo + 655376 + (($310 | 1) << 3) | 0;
     HEAPF64[$317 >> 3] = +HEAPF64[$317 >> 3] / +(HEAP32[$307 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$232 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDWRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $22 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + $17 | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($22) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($27 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $27;
       $30 = ($27 << 16 >> 16) * 7 | 0;
       $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0;
       HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1;
       $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255;
       $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $47 = $46 << 16 >> 16;
      $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $52 = $50 << 16 >> 16 > 0;
      if ($46 << 16 >> 16 <= 0) {
       if ($52) {
        HEAP16[$pnt2$362 >> 1] = $50;
        $152 = $51 * 7 | 0;
        $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
        HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
        $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255;
        $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068;
        $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0;
        if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($172 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $172;
        $175 = ($172 << 16 >> 16) * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$189 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $192 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $192;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16;
        $197 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $192;
        break;
       }
      }
      if ($52) {
       $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;
       $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       if (($55 | 0) > ($58 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $58;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $75 = $58;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $75 = $58;
       } else {
        HEAP16[$pnt2$362 >> 1] = $55;
        if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $75 = $55;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $75 = $55;
       }
       $77 = ($75 << 16 >> 16) * 7 | 0;
       $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0;
       HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1;
       $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255;
       $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($93 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $46;
       $133 = $47 * 7 | 0;
       $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
       HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
       $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255;
       $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068;
       $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0;
       if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;
      $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($98 | 0) > ($101 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $101;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $118 = $101;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $118 = $101;
      } else {
       HEAP16[$pnt2$362 >> 1] = $98;
       if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $118 = $98;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $118 = $98;
      }
      $120 = ($118 << 16 >> 16) * 7 | 0;
      $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0;
      HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1;
      $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255;
      $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } else {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $212 = $pnt$163 + 1 | 0;
     $213 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $212;
      $pnt2$3$lcssa = $213;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $212;
      $pnt2$362 = $213;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 2 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $219 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $221 = HEAP32[$wk$439 >> 2] | 0;
    if (($221 | 0) == ($i$337 | 0)) {
     $227 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $227;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $231 = $labelInfo + 8 | 0;
  $232 = $j$1$lcssa + -1 | 0;
  HEAP32[$231 >> 2] = $232;
  if (!$232) $$0 = 0; else {
   _memset($219 | 0, 0, $232 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $239 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $254 = $i$533 * 7 | 0;
     $257 = $labelInfo + 12 + ($253 << 2) | 0;
     HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0);
     $264 = $253 << 1;
     $265 = $labelInfo + 655376 + ($264 << 3) | 0;
     HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0);
     $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0;
     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0);
     $276 = $253 << 2;
     $277 = $labelInfo + 131084 + ($276 << 2) | 0;
     $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281;
     $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0;
     $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288;
     $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$231 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $306 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $309 = $i$632 << 1;
     $310 = $labelInfo + 655376 + ($309 << 3) | 0;
     HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0);
     $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLabelingSubDBRC($image, $xsize, $ysize, $labelingThresh, $labelInfo) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelingThresh = $labelingThresh | 0;
 $labelInfo = $labelInfo | 0;
 var $$0 = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $101 = 0, $118 = 0, $120 = 0, $122 = 0, $126 = 0, $130 = 0, $133 = 0, $135 = 0, $139 = 0, $143 = 0, $147 = 0, $152 = 0, $154 = 0, $158 = 0, $16 = 0, $162 = 0, $166 = 0, $17 = 0, $172 = 0, $175 = 0, $177 = 0, $18 = 0, $181 = 0, $185 = 0, $189 = 0, $192 = 0, $197 = 0, $212 = 0, $213 = 0, $219 = 0, $22 = 0, $221 = 0, $227 = 0, $231 = 0, $232 = 0, $239 = 0, $253 = 0, $254 = 0, $257 = 0, $264 = 0, $265 = 0, $27 = 0, $273 = 0, $276 = 0, $277 = 0, $281 = 0, $284 = 0, $288 = 0, $291 = 0, $295 = 0, $298 = 0, $30 = 0, $302 = 0, $306 = 0, $309 = 0, $310 = 0, $316 = 0, $32 = 0, $36 = 0, $40 = 0, $46 = 0, $47 = 0, $50 = 0, $51 = 0, $52 = 0, $55 = 0, $58 = 0, $75 = 0, $77 = 0, $79 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $98 = 0, $i$081 = 0, $i$175 = 0, $i$255 = 0, $i$337 = 0, $i$435 = 0, $i$533 = 0, $i$632 = 0, $j$068 = 0, $j$1$lcssa = 0, $j$138 = 0, $j$2 = 0, $k$051 = 0, $k$148 = 0, $k$244 = 0, $k$341 = 0, $pnt$072 = 0, $pnt$1$lcssa = 0, $pnt$163 = 0, $pnt1$083 = 0, $pnt1$177 = 0, $pnt2$082 = 0, $pnt2$176 = 0, $pnt2$271 = 0, $pnt2$3$lcssa = 0, $pnt2$362 = 0, $vararg_buffer = 0, $wk$052 = 0, $wk$149 = 0, $wk$245 = 0, $wk$342 = 0, $wk$439 = 0, $wk_max$0$lcssa = 0, $wk_max$070 = 0, $wk_max$1$lcssa = 0, $wk_max$157 = 0, $wk_max$2 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = HEAP32[$labelInfo >> 2] | 0;
 $1 = $ysize + -1 | 0;
 if (($xsize | 0) > 0) {
  $i$081 = 0;
  $pnt1$083 = $0;
  $pnt2$082 = $0 + ((Math_imul($1, $xsize) | 0) << 1) | 0;
  while (1) {
   HEAP16[$pnt2$082 >> 1] = 0;
   HEAP16[$pnt1$083 >> 1] = 0;
   $i$081 = $i$081 + 1 | 0;
   if (($i$081 | 0) >= ($xsize | 0)) break; else {
    $pnt1$083 = $pnt1$083 + 2 | 0;
    $pnt2$082 = $pnt2$082 + 2 | 0;
   }
  }
 }
 $9 = $xsize + -1 | 0;
 if (($ysize | 0) > 0) {
  $i$175 = 0;
  $pnt1$177 = $0;
  $pnt2$176 = $0 + ($9 << 1) | 0;
  while (1) {
   HEAP16[$pnt2$176 >> 1] = 0;
   HEAP16[$pnt1$177 >> 1] = 0;
   $i$175 = $i$175 + 1 | 0;
   if (($i$175 | 0) >= ($ysize | 0)) break; else {
    $pnt1$177 = $pnt1$177 + ($xsize << 1) | 0;
    $pnt2$176 = $pnt2$176 + ($xsize << 1) | 0;
   }
  }
 }
 $16 = $labelInfo + 1179664 | 0;
 $17 = $xsize + 1 | 0;
 $18 = 0 - $xsize | 0;
 $$sum = 1 - $xsize | 0;
 $$sum1 = ~$xsize;
 L11 : do if (($1 | 0) > 1) {
  $22 = ($9 | 0) > 1;
  $j$068 = 1;
  $pnt$072 = $image + $17 | 0;
  $pnt2$271 = $0 + ($17 << 1) | 0;
  $wk_max$070 = 0;
  L13 : while (1) {
   if ($22) {
    $i$255 = 1;
    $pnt$163 = $pnt$072;
    $pnt2$362 = $pnt2$271;
    $wk_max$157 = $wk_max$070;
    while (1) {
     do if ((HEAPU8[$pnt$163 >> 0] | 0 | 0) > ($labelingThresh | 0)) {
      HEAP16[$pnt2$362 >> 1] = 0;
      $wk_max$2 = $wk_max$157;
     } else {
      $27 = HEAP16[$pnt2$362 + ($18 << 1) >> 1] | 0;
      if ($27 << 16 >> 16 > 0) {
       HEAP16[$pnt2$362 >> 1] = $27;
       $30 = ($27 << 16 >> 16) * 7 | 0;
       $32 = $labelInfo + 1310736 + ($30 + -7 << 2) | 0;
       HEAP32[$32 >> 2] = (HEAP32[$32 >> 2] | 0) + 1;
       $36 = $labelInfo + 1310736 + ($30 + -6 << 2) | 0;
       HEAP32[$36 >> 2] = (HEAP32[$36 >> 2] | 0) + $i$255;
       $40 = $labelInfo + 1310736 + ($30 + -5 << 2) | 0;
       HEAP32[$40 >> 2] = (HEAP32[$40 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($30 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $46 = HEAP16[$pnt2$362 + ($$sum << 1) >> 1] | 0;
      $47 = $46 << 16 >> 16;
      $50 = HEAP16[$pnt2$362 + ($$sum1 << 1) >> 1] | 0;
      $51 = $50 << 16 >> 16;
      $52 = $50 << 16 >> 16 > 0;
      if ($46 << 16 >> 16 <= 0) {
       if ($52) {
        HEAP16[$pnt2$362 >> 1] = $50;
        $152 = $51 * 7 | 0;
        $154 = $labelInfo + 1310736 + ($152 + -7 << 2) | 0;
        HEAP32[$154 >> 2] = (HEAP32[$154 >> 2] | 0) + 1;
        $158 = $labelInfo + 1310736 + ($152 + -6 << 2) | 0;
        HEAP32[$158 >> 2] = (HEAP32[$158 >> 2] | 0) + $i$255;
        $162 = $labelInfo + 1310736 + ($152 + -5 << 2) | 0;
        HEAP32[$162 >> 2] = (HEAP32[$162 >> 2] | 0) + $j$068;
        $166 = $labelInfo + 1310736 + ($152 + -3 << 2) | 0;
        if ((HEAP32[$166 >> 2] | 0) < ($i$255 | 0)) HEAP32[$166 >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($152 + -1 << 2) >> 2] = $j$068;
        $wk_max$2 = $wk_max$157;
        break;
       }
       $172 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
       if ($172 << 16 >> 16 > 0) {
        HEAP16[$pnt2$362 >> 1] = $172;
        $175 = ($172 << 16 >> 16) * 7 | 0;
        $177 = $labelInfo + 1310736 + ($175 + -7 << 2) | 0;
        HEAP32[$177 >> 2] = (HEAP32[$177 >> 2] | 0) + 1;
        $181 = $labelInfo + 1310736 + ($175 + -6 << 2) | 0;
        HEAP32[$181 >> 2] = (HEAP32[$181 >> 2] | 0) + $i$255;
        $185 = $labelInfo + 1310736 + ($175 + -5 << 2) | 0;
        HEAP32[$185 >> 2] = (HEAP32[$185 >> 2] | 0) + $j$068;
        $189 = $labelInfo + 1310736 + ($175 + -3 << 2) | 0;
        if ((HEAP32[$189 >> 2] | 0) >= ($i$255 | 0)) {
         $wk_max$2 = $wk_max$157;
         break;
        }
        HEAP32[$189 >> 2] = $i$255;
        $wk_max$2 = $wk_max$157;
        break;
       } else {
        $192 = $wk_max$157 + 1 | 0;
        if (($wk_max$157 | 0) > 32767) break L13;
        HEAP16[$pnt2$362 >> 1] = $192;
        HEAP32[$labelInfo + 1179664 + ($wk_max$157 << 2) >> 2] = $192 << 16 >> 16;
        $197 = $wk_max$157 * 7 | 0;
        HEAP32[$labelInfo + 1310736 + ($197 << 2) >> 2] = 1;
        HEAP32[$labelInfo + 1310736 + ($197 + 1 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 2 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($197 + 3 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 4 << 2) >> 2] = $i$255;
        HEAP32[$labelInfo + 1310736 + ($197 + 5 << 2) >> 2] = $j$068;
        HEAP32[$labelInfo + 1310736 + ($197 + 6 << 2) >> 2] = $j$068;
        $wk_max$2 = $192;
        break;
       }
      }
      if ($52) {
       $55 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;
       $58 = HEAP32[$labelInfo + 1179664 + ($51 + -1 << 2) >> 2] | 0;
       if (($55 | 0) > ($58 | 0)) {
        HEAP16[$pnt2$362 >> 1] = $58;
        if (($wk_max$157 | 0) > 0) {
         $k$051 = 0;
         $wk$052 = $16;
         while (1) {
          if ((HEAP32[$wk$052 >> 2] | 0) == ($55 | 0)) HEAP32[$wk$052 >> 2] = $58;
          $k$051 = $k$051 + 1 | 0;
          if (($k$051 | 0) >= ($wk_max$157 | 0)) {
           $75 = $58;
           break;
          } else $wk$052 = $wk$052 + 4 | 0;
         }
        } else $75 = $58;
       } else {
        HEAP16[$pnt2$362 >> 1] = $55;
        if (($55 | 0) < ($58 | 0) & ($wk_max$157 | 0) > 0) {
         $k$148 = 0;
         $wk$149 = $16;
         while (1) {
          if ((HEAP32[$wk$149 >> 2] | 0) == ($58 | 0)) HEAP32[$wk$149 >> 2] = $55;
          $k$148 = $k$148 + 1 | 0;
          if (($k$148 | 0) >= ($wk_max$157 | 0)) {
           $75 = $55;
           break;
          } else $wk$149 = $wk$149 + 4 | 0;
         }
        } else $75 = $55;
       }
       $77 = ($75 << 16 >> 16) * 7 | 0;
       $79 = $labelInfo + 1310736 + ($77 + -7 << 2) | 0;
       HEAP32[$79 >> 2] = (HEAP32[$79 >> 2] | 0) + 1;
       $83 = $labelInfo + 1310736 + ($77 + -6 << 2) | 0;
       HEAP32[$83 >> 2] = (HEAP32[$83 >> 2] | 0) + $i$255;
       $87 = $labelInfo + 1310736 + ($77 + -5 << 2) | 0;
       HEAP32[$87 >> 2] = (HEAP32[$87 >> 2] | 0) + $j$068;
       HEAP32[$labelInfo + 1310736 + ($77 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $93 = HEAP16[$pnt2$362 + -2 >> 1] | 0;
      if ($93 << 16 >> 16 <= 0) {
       HEAP16[$pnt2$362 >> 1] = $46;
       $133 = $47 * 7 | 0;
       $135 = $labelInfo + 1310736 + ($133 + -7 << 2) | 0;
       HEAP32[$135 >> 2] = (HEAP32[$135 >> 2] | 0) + 1;
       $139 = $labelInfo + 1310736 + ($133 + -6 << 2) | 0;
       HEAP32[$139 >> 2] = (HEAP32[$139 >> 2] | 0) + $i$255;
       $143 = $labelInfo + 1310736 + ($133 + -5 << 2) | 0;
       HEAP32[$143 >> 2] = (HEAP32[$143 >> 2] | 0) + $j$068;
       $147 = $labelInfo + 1310736 + ($133 + -4 << 2) | 0;
       if ((HEAP32[$147 >> 2] | 0) > ($i$255 | 0)) HEAP32[$147 >> 2] = $i$255;
       HEAP32[$labelInfo + 1310736 + ($133 + -1 << 2) >> 2] = $j$068;
       $wk_max$2 = $wk_max$157;
       break;
      }
      $98 = HEAP32[$labelInfo + 1179664 + ($47 + -1 << 2) >> 2] | 0;
      $101 = HEAP32[$labelInfo + 1179664 + (($93 << 16 >> 16) + -1 << 2) >> 2] | 0;
      if (($98 | 0) > ($101 | 0)) {
       HEAP16[$pnt2$362 >> 1] = $101;
       if (($wk_max$157 | 0) > 0) {
        $k$244 = 0;
        $wk$245 = $16;
        while (1) {
         if ((HEAP32[$wk$245 >> 2] | 0) == ($98 | 0)) HEAP32[$wk$245 >> 2] = $101;
         $k$244 = $k$244 + 1 | 0;
         if (($k$244 | 0) >= ($wk_max$157 | 0)) {
          $118 = $101;
          break;
         } else $wk$245 = $wk$245 + 4 | 0;
        }
       } else $118 = $101;
      } else {
       HEAP16[$pnt2$362 >> 1] = $98;
       if (($98 | 0) < ($101 | 0) & ($wk_max$157 | 0) > 0) {
        $k$341 = 0;
        $wk$342 = $16;
        while (1) {
         if ((HEAP32[$wk$342 >> 2] | 0) == ($101 | 0)) HEAP32[$wk$342 >> 2] = $98;
         $k$341 = $k$341 + 1 | 0;
         if (($k$341 | 0) >= ($wk_max$157 | 0)) {
          $118 = $98;
          break;
         } else $wk$342 = $wk$342 + 4 | 0;
        }
       } else $118 = $98;
      }
      $120 = ($118 << 16 >> 16) * 7 | 0;
      $122 = $labelInfo + 1310736 + ($120 + -7 << 2) | 0;
      HEAP32[$122 >> 2] = (HEAP32[$122 >> 2] | 0) + 1;
      $126 = $labelInfo + 1310736 + ($120 + -6 << 2) | 0;
      HEAP32[$126 >> 2] = (HEAP32[$126 >> 2] | 0) + $i$255;
      $130 = $labelInfo + 1310736 + ($120 + -5 << 2) | 0;
      HEAP32[$130 >> 2] = (HEAP32[$130 >> 2] | 0) + $j$068;
      $wk_max$2 = $wk_max$157;
     } while (0);
     $i$255 = $i$255 + 1 | 0;
     $212 = $pnt$163 + 1 | 0;
     $213 = $pnt2$362 + 2 | 0;
     if (($i$255 | 0) >= ($9 | 0)) {
      $pnt$1$lcssa = $212;
      $pnt2$3$lcssa = $213;
      $wk_max$1$lcssa = $wk_max$2;
      break;
     } else {
      $pnt$163 = $212;
      $pnt2$362 = $213;
      $wk_max$157 = $wk_max$2;
     }
    }
   } else {
    $pnt$1$lcssa = $pnt$072;
    $pnt2$3$lcssa = $pnt2$271;
    $wk_max$1$lcssa = $wk_max$070;
   }
   $j$068 = $j$068 + 1 | 0;
   if (($j$068 | 0) >= ($1 | 0)) {
    $wk_max$0$lcssa = $wk_max$1$lcssa;
    label = 52;
    break L11;
   } else {
    $pnt$072 = $pnt$1$lcssa + 2 | 0;
    $pnt2$271 = $pnt2$3$lcssa + 4 | 0;
    $wk_max$070 = $wk_max$1$lcssa;
   }
  }
  _arLog(3, 3904, $vararg_buffer);
  $$0 = -1;
 } else {
  $wk_max$0$lcssa = 0;
  label = 52;
 } while (0);
 if ((label | 0) == 52) {
  $219 = $labelInfo + 12 | 0;
  if (($wk_max$0$lcssa | 0) < 1) $j$1$lcssa = 1; else {
   $i$337 = 1;
   $j$138 = 1;
   $wk$439 = $16;
   while (1) {
    $221 = HEAP32[$wk$439 >> 2] | 0;
    if (($221 | 0) == ($i$337 | 0)) {
     $227 = $j$138;
     $j$2 = $j$138 + 1 | 0;
    } else {
     $227 = HEAP32[$labelInfo + 1179664 + ($221 + -1 << 2) >> 2] | 0;
     $j$2 = $j$138;
    }
    HEAP32[$wk$439 >> 2] = $227;
    if (($i$337 | 0) < ($wk_max$0$lcssa | 0)) {
     $i$337 = $i$337 + 1 | 0;
     $j$138 = $j$2;
     $wk$439 = $wk$439 + 4 | 0;
    } else {
     $j$1$lcssa = $j$2;
     break;
    }
   }
  }
  $231 = $labelInfo + 8 | 0;
  $232 = $j$1$lcssa + -1 | 0;
  HEAP32[$231 >> 2] = $232;
  if (!$232) $$0 = 0; else {
   _memset($219 | 0, 0, $232 << 2 | 0) | 0;
   _memset($labelInfo + 655376 | 0, 0, $232 << 4 | 0) | 0;
   if (($j$1$lcssa | 0) > 1) {
    $i$435 = 0;
    do {
     $239 = $i$435 << 2;
     HEAP32[$labelInfo + 131084 + ($239 << 2) >> 2] = $xsize;
     HEAP32[$labelInfo + 131084 + (($239 | 1) << 2) >> 2] = 0;
     HEAP32[$labelInfo + 131084 + (($239 | 2) << 2) >> 2] = $ysize;
     HEAP32[$labelInfo + 131084 + (($239 | 3) << 2) >> 2] = 0;
     $i$435 = $i$435 + 1 | 0;
    } while (($i$435 | 0) < (HEAP32[$231 >> 2] | 0));
   }
   if (($wk_max$0$lcssa | 0) > 0) {
    $i$533 = 0;
    do {
     $253 = (HEAP32[$labelInfo + 1179664 + ($i$533 << 2) >> 2] | 0) + -1 | 0;
     $254 = $i$533 * 7 | 0;
     $257 = $labelInfo + 12 + ($253 << 2) | 0;
     HEAP32[$257 >> 2] = (HEAP32[$257 >> 2] | 0) + (HEAP32[$labelInfo + 1310736 + ($254 << 2) >> 2] | 0);
     $264 = $253 << 1;
     $265 = $labelInfo + 655376 + ($264 << 3) | 0;
     HEAPF64[$265 >> 3] = +HEAPF64[$265 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 1 << 2) >> 2] | 0);
     $273 = $labelInfo + 655376 + (($264 | 1) << 3) | 0;
     HEAPF64[$273 >> 3] = +HEAPF64[$273 >> 3] + +(HEAP32[$labelInfo + 1310736 + ($254 + 2 << 2) >> 2] | 0);
     $276 = $253 << 2;
     $277 = $labelInfo + 131084 + ($276 << 2) | 0;
     $281 = HEAP32[$labelInfo + 1310736 + ($254 + 3 << 2) >> 2] | 0;
     if ((HEAP32[$277 >> 2] | 0) > ($281 | 0)) HEAP32[$277 >> 2] = $281;
     $284 = $labelInfo + 131084 + (($276 | 1) << 2) | 0;
     $288 = HEAP32[$labelInfo + 1310736 + ($254 + 4 << 2) >> 2] | 0;
     if ((HEAP32[$284 >> 2] | 0) < ($288 | 0)) HEAP32[$284 >> 2] = $288;
     $291 = $labelInfo + 131084 + (($276 | 2) << 2) | 0;
     $295 = HEAP32[$labelInfo + 1310736 + ($254 + 5 << 2) >> 2] | 0;
     if ((HEAP32[$291 >> 2] | 0) > ($295 | 0)) HEAP32[$291 >> 2] = $295;
     $298 = $labelInfo + 131084 + (($276 | 3) << 2) | 0;
     $302 = HEAP32[$labelInfo + 1310736 + ($254 + 6 << 2) >> 2] | 0;
     if ((HEAP32[$298 >> 2] | 0) < ($302 | 0)) HEAP32[$298 >> 2] = $302;
     $i$533 = $i$533 + 1 | 0;
    } while (($i$533 | 0) < ($wk_max$0$lcssa | 0));
   }
   if ((HEAP32[$231 >> 2] | 0) > 0) {
    $i$632 = 0;
    do {
     $306 = $labelInfo + 12 + ($i$632 << 2) | 0;
     $309 = $i$632 << 1;
     $310 = $labelInfo + 655376 + ($309 << 3) | 0;
     HEAPF64[$310 >> 3] = +HEAPF64[$310 >> 3] / +(HEAP32[$306 >> 2] | 0);
     $316 = $labelInfo + 655376 + (($309 | 1) << 3) | 0;
     HEAPF64[$316 >> 3] = +HEAPF64[$316 >> 3] / +(HEAP32[$306 >> 2] | 0);
     $i$632 = $i$632 + 1 | 0;
    } while (($i$632 | 0) < (HEAP32[$231 >> 2] | 0));
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0$i$i$i = 0, $$0$i$i$i10 = 0, $$0$i$i$i21 = 0, $$0$i$i$i7 = 0, $$1 = 0, $$lcssa = 0, $$lcssa152 = 0, $$pre = 0, $0 = 0, $1 = 0, $100 = 0, $102 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $118 = 0, $12 = 0, $121 = 0, $124 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $14 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $154 = 0, $157 = 0, $16 = 0, $164 = 0, $174 = 0, $176 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $19 = 0, $192 = 0, $193 = 0, $195 = 0, $2 = 0, $209 = 0, $211 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $225 = 0, $227 = 0, $23 = 0, $230 = 0, $231 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $38 = 0, $43 = 0, $44 = 0, $45 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $60 = 0, $63 = 0, $66 = 0, $76 = 0, $82 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $95 = 0, $96 = 0, $98 = 0, $99 = 0, $__v$i$i20 = 0, $args = 0, $k$0121 = 0, $k1$0124 = 0, $k2$0123 = 0, $t$0$lcssa = 0, $t$0126 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i20 = sp + 64 | 0;
 $args = sp + 52 | 0;
 $0 = sp + 40 | 0;
 $1 = sp + 16 | 0;
 $2 = sp;
 L1 : do if (($last - $first | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 73) {
  $9 = $db + 61 | 0;
  $$pre = $db + 36 | 0;
  if (HEAP8[$9 >> 0] | 0) {
   $12 = HEAP32[$$pre >> 2] | 0;
   $14 = HEAP32[$12 + -16 >> 2] | 0;
   $15 = $12 + -12 | 0;
   $16 = HEAP32[$15 >> 2] | 0;
   if (($16 | 0) != ($14 | 0)) {
    $19 = $16;
    do {
     $18 = $19 + -16 | 0;
     HEAP32[$15 >> 2] = $18;
     __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($18);
     $19 = HEAP32[$15 >> 2] | 0;
    } while (($19 | 0) != ($14 | 0));
   }
  }
  $22 = $first + 1 | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($args, 12776, 1);
  $23 = $db + 4 | 0;
  $24 = $db + 12 | 0;
  $25 = $__v$i$i20 + 8 | 0;
  $26 = $__v$i$i20 + 8 | 0;
  $27 = $args + 4 | 0;
  $28 = $0 + 8 | 0;
  $29 = $0 + 1 | 0;
  $30 = $0 + 4 | 0;
  $31 = $db + 32 | 0;
  $32 = $db + 40 | 0;
  $33 = $db + 44 | 0;
  $34 = $__v$i$i20 + 8 | 0;
  L9 : do if ((HEAP8[$22 >> 0] | 0) == 69) $t$0$lcssa = $22; else {
   $t$0126 = $22;
   L10 : while (1) {
    do if (HEAP8[$9 >> 0] | 0) {
     $43 = HEAP32[$24 >> 2] | 0;
     $44 = HEAP32[$$pre >> 2] | 0;
     $45 = HEAP32[$32 >> 2] | 0;
     if ($44 >>> 0 < $45 >>> 0) {
      HEAP32[$44 >> 2] = 0;
      HEAP32[$44 + 4 >> 2] = 0;
      HEAP32[$44 + 8 >> 2] = 0;
      HEAP32[$44 + 12 >> 2] = $43;
      HEAP32[$$pre >> 2] = (HEAP32[$$pre >> 2] | 0) + 16;
      break;
     }
     $54 = HEAP32[$31 >> 2] | 0;
     $55 = $44 - $54 | 0;
     $56 = $55 >> 4;
     $57 = $56 + 1 | 0;
     if (($55 | 0) < -16) {
      label = 12;
      break L10;
     }
     $60 = $45 - $54 | 0;
     if ($60 >> 4 >>> 0 < 1073741823) {
      $63 = $60 >> 3;
      $$0$i$i$i = $63 >>> 0 < $57 >>> 0 ? $57 : $63;
     } else $$0$i$i$i = 2147483647;
     __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i20, $$0$i$i$i, $56, $33);
     $66 = HEAP32[$34 >> 2] | 0;
     HEAP32[$66 >> 2] = 0;
     HEAP32[$66 + 4 >> 2] = 0;
     HEAP32[$66 + 8 >> 2] = 0;
     HEAP32[$66 + 12 >> 2] = $43;
     HEAP32[$34 >> 2] = $66 + 16;
     __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($31, $__v$i$i20);
     __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i20);
    } while (0);
    $76 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
    $38 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0126, $last, $db) | 0;
    $82 = ((HEAP32[$23 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
    if (HEAP8[$9 >> 0] | 0) {
     $85 = HEAP32[$$pre >> 2] | 0;
     $86 = $85 + -16 | 0;
     $88 = $85;
     do {
      $87 = $88 + -16 | 0;
      HEAP32[$$pre >> 2] = $87;
      __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($87);
      $88 = HEAP32[$$pre >> 2] | 0;
     } while (($88 | 0) != ($86 | 0));
    }
    if (($38 | 0) == ($t$0126 | 0) | ($38 | 0) == ($last | 0)) {
     label = 56;
     break;
    }
    if (HEAP8[$9 >> 0] | 0) {
     $95 = HEAP32[$$pre >> 2] | 0;
     $96 = $95 + -16 | 0;
     $98 = HEAP32[$24 >> 2] | 0;
     $99 = $95 + -12 | 0;
     $100 = HEAP32[$99 >> 2] | 0;
     $102 = HEAP32[$95 + -8 >> 2] | 0;
     if ($100 >>> 0 < $102 >>> 0) {
      HEAP32[$100 >> 2] = 0;
      HEAP32[$100 + 4 >> 2] = 0;
      HEAP32[$100 + 8 >> 2] = 0;
      HEAP32[$100 + 12 >> 2] = $98;
      HEAP32[$99 >> 2] = (HEAP32[$99 >> 2] | 0) + 16;
     } else {
      $112 = HEAP32[$96 >> 2] | 0;
      $113 = $100 - $112 | 0;
      $114 = $113 >> 4;
      $115 = $114 + 1 | 0;
      if (($113 | 0) < -16) {
       $$lcssa = $96;
       label = 25;
       break;
      }
      $118 = $102 - $112 | 0;
      if ($118 >> 4 >>> 0 < 1073741823) {
       $121 = $118 >> 3;
       $$0$i$i$i7 = $121 >>> 0 < $115 >>> 0 ? $115 : $121;
      } else $$0$i$i$i7 = 2147483647;
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i20, $$0$i$i$i7, $114, $95 + -4 | 0);
      $124 = HEAP32[$25 >> 2] | 0;
      HEAP32[$124 >> 2] = 0;
      HEAP32[$124 + 4 >> 2] = 0;
      HEAP32[$124 + 8 >> 2] = 0;
      HEAP32[$124 + 12 >> 2] = $98;
      HEAP32[$25 >> 2] = $124 + 16;
      __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($96, $__v$i$i20);
      __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i20);
     }
     if ($76 >>> 0 < $82 >>> 0) {
      $k$0121 = $76;
      do {
       $132 = HEAP32[(HEAP32[$$pre >> 2] | 0) + -12 >> 2] | 0;
       $133 = $132 + -16 | 0;
       $134 = HEAP32[$db >> 2] | 0;
       $135 = $134 + ($k$0121 * 24 | 0) | 0;
       $136 = $132 + -12 | 0;
       $137 = HEAP32[$136 >> 2] | 0;
       if (($137 | 0) == (HEAP32[$132 + -8 >> 2] | 0)) {
        $149 = $137 - (HEAP32[$133 >> 2] | 0) | 0;
        $150 = ($149 | 0) / 24 | 0;
        $151 = $150 + 1 | 0;
        if (($149 | 0) < -24) {
         $$lcssa152 = $133;
         label = 33;
         break L10;
        }
        if ($150 >>> 0 < 1073741823) {
         $154 = $150 << 1;
         $$0$i$i$i10 = $154 >>> 0 < $151 >>> 0 ? $151 : $154;
        } else $$0$i$i$i10 = 2147483647;
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i10, $150, $132 + -4 | 0);
        $157 = HEAP32[$26 >> 2] | 0;
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157, $135);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($157 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0);
        HEAP32[$26 >> 2] = $157 + 24;
        __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($133, $__v$i$i20);
        __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20);
       } else {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137, $135);
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($137 + 12 | 0, $134 + ($k$0121 * 24 | 0) + 12 | 0);
        HEAP32[$136 >> 2] = (HEAP32[$136 >> 2] | 0) + 24;
       }
       $k$0121 = $k$0121 + 1 | 0;
      } while ($k$0121 >>> 0 < $82 >>> 0);
     }
    }
    if ($76 >>> 0 < $82 >>> 0) {
     $k2$0123 = $76;
     do {
      $164 = HEAP8[$args >> 0] | 0;
      if ((($164 & 1) == 0 ? ($164 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) >>> 0 > 1) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12716) | 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($0, (HEAP32[$db >> 2] | 0) + ($k2$0123 * 24 | 0) | 0);
      $174 = HEAP8[$0 >> 0] | 0;
      $176 = ($174 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($args, $176 ? $29 : HEAP32[$28 >> 2] | 0, $176 ? ($174 & 255) >>> 1 : HEAP32[$30 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
      $k2$0123 = $k2$0123 + 1 | 0;
     } while ($k2$0123 >>> 0 < $82 >>> 0);
    }
    if (($82 | 0) != ($76 | 0)) {
     $k1$0124 = $82;
     do {
      $185 = HEAP32[$23 >> 2] | 0;
      $186 = $185 + -24 | 0;
      $188 = $185;
      do {
       $187 = $188 + -24 | 0;
       HEAP32[$23 >> 2] = $187;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($187);
       $188 = HEAP32[$23 >> 2] | 0;
      } while (($188 | 0) != ($186 | 0));
      $k1$0124 = $k1$0124 + -1 | 0;
     } while (($k1$0124 | 0) != ($76 | 0));
    }
    if ((HEAP8[$38 >> 0] | 0) == 69) {
     $t$0$lcssa = $38;
     break L9;
    } else $t$0126 = $38;
   }
   if ((label | 0) == 12) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($31); else if ((label | 0) == 25) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa); else if ((label | 0) == 33) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($$lcssa152); else if ((label | 0) == 56) {
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
    $$1 = $first;
    break L1;
   }
  } while (0);
  $192 = $t$0$lcssa + 1 | 0;
  $193 = HEAP8[$args >> 0] | 0;
  $195 = ($193 & 1) == 0;
  if ((HEAP8[($195 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0) + (($195 ? ($193 & 255) >>> 1 : HEAP32[$27 >> 2] | 0) + -1) >> 0] | 0) == 62) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 13761) | 0; else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($args, 12778) | 0;
  HEAP32[$2 >> 2] = HEAP32[$args >> 2];
  HEAP32[$2 + 4 >> 2] = HEAP32[$args + 4 >> 2];
  HEAP32[$2 + 8 >> 2] = HEAP32[$args + 8 >> 2];
  HEAP32[$args >> 2] = 0;
  HEAP32[$args + 4 >> 2] = 0;
  HEAP32[$args + 8 >> 2] = 0;
  __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
  $209 = HEAP32[$23 >> 2] | 0;
  $211 = HEAP32[$db + 8 >> 2] | 0;
  if ($209 >>> 0 < $211 >>> 0) {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($209, $1);
   HEAP32[$23 >> 2] = (HEAP32[$23 >> 2] | 0) + 24;
  } else {
   $218 = HEAP32[$db >> 2] | 0;
   $219 = $209 - $218 | 0;
   $220 = ($219 | 0) / 24 | 0;
   $221 = $220 + 1 | 0;
   if (($219 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
   $225 = ($211 - $218 | 0) / 24 | 0;
   if ($225 >>> 0 < 1073741823) {
    $227 = $225 << 1;
    $$0$i$i$i21 = $227 >>> 0 < $221 >>> 0 ? $221 : $227;
   } else $$0$i$i$i21 = 2147483647;
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i20, $$0$i$i$i21, $220, $db + 12 | 0);
   $230 = $__v$i$i20 + 8 | 0;
   $231 = HEAP32[$230 >> 2] | 0;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($231, $1);
   HEAP32[$230 >> 2] = $231 + 24;
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i20);
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i20);
  }
  __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
  $$1 = $192;
 } else $$1 = $first; else $$1 = $first; while (0);
 STACKTOP = sp;
 return $$1 | 0;
}
function _free($mem) {
 $mem = $mem | 0;
 var $$lcssa = 0, $$pre$phi59Z2D = 0, $$pre$phi61Z2D = 0, $$pre$phiZ2D = 0, $$sum2 = 0, $1 = 0, $103 = 0, $104 = 0, $111 = 0, $112 = 0, $12 = 0, $120 = 0, $128 = 0, $133 = 0, $134 = 0, $137 = 0, $139 = 0, $14 = 0, $141 = 0, $15 = 0, $156 = 0, $161 = 0, $163 = 0, $166 = 0, $169 = 0, $172 = 0, $175 = 0, $176 = 0, $178 = 0, $179 = 0, $181 = 0, $182 = 0, $184 = 0, $185 = 0, $19 = 0, $191 = 0, $192 = 0, $2 = 0, $201 = 0, $206 = 0, $210 = 0, $216 = 0, $22 = 0, $231 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $24 = 0, $240 = 0, $241 = 0, $247 = 0, $252 = 0, $253 = 0, $256 = 0, $258 = 0, $26 = 0, $261 = 0, $266 = 0, $272 = 0, $276 = 0, $277 = 0, $284 = 0, $296 = 0, $301 = 0, $308 = 0, $309 = 0, $310 = 0, $318 = 0, $39 = 0, $44 = 0, $46 = 0, $49 = 0, $5 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $6 = 0, $60 = 0, $61 = 0, $63 = 0, $64 = 0, $66 = 0, $67 = 0, $72 = 0, $73 = 0, $8 = 0, $82 = 0, $87 = 0, $9 = 0, $91 = 0, $97 = 0, $F16$0 = 0, $I18$0 = 0, $K19$052 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$051 = 0, $T$051$lcssa = 0, $p$0 = 0, $psize$0 = 0, $psize$1 = 0, $sp$0$i = 0, $sp$0$in$i = 0;
 if (!$mem) return;
 $1 = $mem + -8 | 0;
 $2 = HEAP32[760] | 0;
 if ($1 >>> 0 < $2 >>> 0) _abort();
 $5 = HEAP32[$mem + -4 >> 2] | 0;
 $6 = $5 & 3;
 if (($6 | 0) == 1) _abort();
 $8 = $5 & -8;
 $9 = $mem + ($8 + -8) | 0;
 do if (!($5 & 1)) {
  $12 = HEAP32[$1 >> 2] | 0;
  if (!$6) return;
  $$sum2 = -8 - $12 | 0;
  $14 = $mem + $$sum2 | 0;
  $15 = $12 + $8 | 0;
  if ($14 >>> 0 < $2 >>> 0) _abort();
  if (($14 | 0) == (HEAP32[761] | 0)) {
   $103 = $mem + ($8 + -4) | 0;
   $104 = HEAP32[$103 >> 2] | 0;
   if (($104 & 3 | 0) != 3) {
    $p$0 = $14;
    $psize$0 = $15;
    break;
   }
   HEAP32[758] = $15;
   HEAP32[$103 >> 2] = $104 & -2;
   HEAP32[$mem + ($$sum2 + 4) >> 2] = $15 | 1;
   HEAP32[$9 >> 2] = $15;
   return;
  }
  $19 = $12 >>> 3;
  if ($12 >>> 0 < 256) {
   $22 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0;
   $24 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0;
   $26 = 3064 + ($19 << 1 << 2) | 0;
   if (($22 | 0) != ($26 | 0)) {
    if ($22 >>> 0 < $2 >>> 0) _abort();
    if ((HEAP32[$22 + 12 >> 2] | 0) != ($14 | 0)) _abort();
   }
   if (($24 | 0) == ($22 | 0)) {
    HEAP32[756] = HEAP32[756] & ~(1 << $19);
    $p$0 = $14;
    $psize$0 = $15;
    break;
   }
   if (($24 | 0) == ($26 | 0)) $$pre$phi61Z2D = $24 + 8 | 0; else {
    if ($24 >>> 0 < $2 >>> 0) _abort();
    $39 = $24 + 8 | 0;
    if ((HEAP32[$39 >> 2] | 0) == ($14 | 0)) $$pre$phi61Z2D = $39; else _abort();
   }
   HEAP32[$22 + 12 >> 2] = $24;
   HEAP32[$$pre$phi61Z2D >> 2] = $22;
   $p$0 = $14;
   $psize$0 = $15;
   break;
  }
  $44 = HEAP32[$mem + ($$sum2 + 24) >> 2] | 0;
  $46 = HEAP32[$mem + ($$sum2 + 12) >> 2] | 0;
  do if (($46 | 0) == ($14 | 0)) {
   $57 = $mem + ($$sum2 + 20) | 0;
   $58 = HEAP32[$57 >> 2] | 0;
   if (!$58) {
    $60 = $mem + ($$sum2 + 16) | 0;
    $61 = HEAP32[$60 >> 2] | 0;
    if (!$61) {
     $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;
    if ($64) {
     $R$0 = $64;
     $RP$0 = $63;
     continue;
    }
    $66 = $R$0 + 16 | 0;
    $67 = HEAP32[$66 >> 2] | 0;
    if (!$67) {
     $R$0$lcssa = $R$0;
     $RP$0$lcssa = $RP$0;
     break;
    } else {
     $R$0 = $67;
     $RP$0 = $66;
    }
   }
   if ($RP$0$lcssa >>> 0 < $2 >>> 0) _abort(); else {
    HEAP32[$RP$0$lcssa >> 2] = 0;
    $R$1 = $R$0$lcssa;
    break;
   }
  } else {
   $49 = HEAP32[$mem + ($$sum2 + 8) >> 2] | 0;
   if ($49 >>> 0 < $2 >>> 0) _abort();
   $51 = $49 + 12 | 0;
   if ((HEAP32[$51 >> 2] | 0) != ($14 | 0)) _abort();
   $54 = $46 + 8 | 0;
   if ((HEAP32[$54 >> 2] | 0) == ($14 | 0)) {
    HEAP32[$51 >> 2] = $46;
    HEAP32[$54 >> 2] = $49;
    $R$1 = $46;
    break;
   } else _abort();
  } while (0);
  if (!$44) {
   $p$0 = $14;
   $psize$0 = $15;
  } else {
   $72 = HEAP32[$mem + ($$sum2 + 28) >> 2] | 0;
   $73 = 3328 + ($72 << 2) | 0;
   if (($14 | 0) == (HEAP32[$73 >> 2] | 0)) {
    HEAP32[$73 >> 2] = $R$1;
    if (!$R$1) {
     HEAP32[757] = HEAP32[757] & ~(1 << $72);
     $p$0 = $14;
     $psize$0 = $15;
     break;
    }
   } else {
    if ($44 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $82 = $44 + 16 | 0;
    if ((HEAP32[$82 >> 2] | 0) == ($14 | 0)) HEAP32[$82 >> 2] = $R$1; else HEAP32[$44 + 20 >> 2] = $R$1;
    if (!$R$1) {
     $p$0 = $14;
     $psize$0 = $15;
     break;
    }
   }
   $87 = HEAP32[760] | 0;
   if ($R$1 >>> 0 < $87 >>> 0) _abort();
   HEAP32[$R$1 + 24 >> 2] = $44;
   $91 = HEAP32[$mem + ($$sum2 + 16) >> 2] | 0;
   do if ($91) if ($91 >>> 0 < $87 >>> 0) _abort(); else {
    HEAP32[$R$1 + 16 >> 2] = $91;
    HEAP32[$91 + 24 >> 2] = $R$1;
    break;
   } while (0);
   $97 = HEAP32[$mem + ($$sum2 + 20) >> 2] | 0;
   if (!$97) {
    $p$0 = $14;
    $psize$0 = $15;
   } else if ($97 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    HEAP32[$R$1 + 20 >> 2] = $97;
    HEAP32[$97 + 24 >> 2] = $R$1;
    $p$0 = $14;
    $psize$0 = $15;
    break;
   }
  }
 } else {
  $p$0 = $1;
  $psize$0 = $8;
 } while (0);
 if ($p$0 >>> 0 >= $9 >>> 0) _abort();
 $111 = $mem + ($8 + -4) | 0;
 $112 = HEAP32[$111 >> 2] | 0;
 if (!($112 & 1)) _abort();
 if (!($112 & 2)) {
  if (($9 | 0) == (HEAP32[762] | 0)) {
   $120 = (HEAP32[759] | 0) + $psize$0 | 0;
   HEAP32[759] = $120;
   HEAP32[762] = $p$0;
   HEAP32[$p$0 + 4 >> 2] = $120 | 1;
   if (($p$0 | 0) != (HEAP32[761] | 0)) return;
   HEAP32[761] = 0;
   HEAP32[758] = 0;
   return;
  }
  if (($9 | 0) == (HEAP32[761] | 0)) {
   $128 = (HEAP32[758] | 0) + $psize$0 | 0;
   HEAP32[758] = $128;
   HEAP32[761] = $p$0;
   HEAP32[$p$0 + 4 >> 2] = $128 | 1;
   HEAP32[$p$0 + $128 >> 2] = $128;
   return;
  }
  $133 = ($112 & -8) + $psize$0 | 0;
  $134 = $112 >>> 3;
  do if ($112 >>> 0 < 256) {
   $137 = HEAP32[$mem + $8 >> 2] | 0;
   $139 = HEAP32[$mem + ($8 | 4) >> 2] | 0;
   $141 = 3064 + ($134 << 1 << 2) | 0;
   if (($137 | 0) != ($141 | 0)) {
    if ($137 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    if ((HEAP32[$137 + 12 >> 2] | 0) != ($9 | 0)) _abort();
   }
   if (($139 | 0) == ($137 | 0)) {
    HEAP32[756] = HEAP32[756] & ~(1 << $134);
    break;
   }
   if (($139 | 0) == ($141 | 0)) $$pre$phi59Z2D = $139 + 8 | 0; else {
    if ($139 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $156 = $139 + 8 | 0;
    if ((HEAP32[$156 >> 2] | 0) == ($9 | 0)) $$pre$phi59Z2D = $156; else _abort();
   }
   HEAP32[$137 + 12 >> 2] = $139;
   HEAP32[$$pre$phi59Z2D >> 2] = $137;
  } else {
   $161 = HEAP32[$mem + ($8 + 16) >> 2] | 0;
   $163 = HEAP32[$mem + ($8 | 4) >> 2] | 0;
   do if (($163 | 0) == ($9 | 0)) {
    $175 = $mem + ($8 + 12) | 0;
    $176 = HEAP32[$175 >> 2] | 0;
    if (!$176) {
     $178 = $mem + ($8 + 8) | 0;
     $179 = HEAP32[$178 >> 2] | 0;
     if (!$179) {
      $R7$1 = 0;
      break;
     } else {
      $R7$0 = $179;
      $RP9$0 = $178;
     }
    } else {
     $R7$0 = $176;
     $RP9$0 = $175;
    }
    while (1) {
     $181 = $R7$0 + 20 | 0;
     $182 = HEAP32[$181 >> 2] | 0;
     if ($182) {
      $R7$0 = $182;
      $RP9$0 = $181;
      continue;
     }
     $184 = $R7$0 + 16 | 0;
     $185 = HEAP32[$184 >> 2] | 0;
     if (!$185) {
      $R7$0$lcssa = $R7$0;
      $RP9$0$lcssa = $RP9$0;
      break;
     } else {
      $R7$0 = $185;
      $RP9$0 = $184;
     }
    }
    if ($RP9$0$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
     HEAP32[$RP9$0$lcssa >> 2] = 0;
     $R7$1 = $R7$0$lcssa;
     break;
    }
   } else {
    $166 = HEAP32[$mem + $8 >> 2] | 0;
    if ($166 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $169 = $166 + 12 | 0;
    if ((HEAP32[$169 >> 2] | 0) != ($9 | 0)) _abort();
    $172 = $163 + 8 | 0;
    if ((HEAP32[$172 >> 2] | 0) == ($9 | 0)) {
     HEAP32[$169 >> 2] = $163;
     HEAP32[$172 >> 2] = $166;
     $R7$1 = $163;
     break;
    } else _abort();
   } while (0);
   if ($161) {
    $191 = HEAP32[$mem + ($8 + 20) >> 2] | 0;
    $192 = 3328 + ($191 << 2) | 0;
    if (($9 | 0) == (HEAP32[$192 >> 2] | 0)) {
     HEAP32[$192 >> 2] = $R7$1;
     if (!$R7$1) {
      HEAP32[757] = HEAP32[757] & ~(1 << $191);
      break;
     }
    } else {
     if ($161 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
     $201 = $161 + 16 | 0;
     if ((HEAP32[$201 >> 2] | 0) == ($9 | 0)) HEAP32[$201 >> 2] = $R7$1; else HEAP32[$161 + 20 >> 2] = $R7$1;
     if (!$R7$1) break;
    }
    $206 = HEAP32[760] | 0;
    if ($R7$1 >>> 0 < $206 >>> 0) _abort();
    HEAP32[$R7$1 + 24 >> 2] = $161;
    $210 = HEAP32[$mem + ($8 + 8) >> 2] | 0;
    do if ($210) if ($210 >>> 0 < $206 >>> 0) _abort(); else {
     HEAP32[$R7$1 + 16 >> 2] = $210;
     HEAP32[$210 + 24 >> 2] = $R7$1;
     break;
    } while (0);
    $216 = HEAP32[$mem + ($8 + 12) >> 2] | 0;
    if ($216) if ($216 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
     HEAP32[$R7$1 + 20 >> 2] = $216;
     HEAP32[$216 + 24 >> 2] = $R7$1;
     break;
    }
   }
  } while (0);
  HEAP32[$p$0 + 4 >> 2] = $133 | 1;
  HEAP32[$p$0 + $133 >> 2] = $133;
  if (($p$0 | 0) == (HEAP32[761] | 0)) {
   HEAP32[758] = $133;
   return;
  } else $psize$1 = $133;
 } else {
  HEAP32[$111 >> 2] = $112 & -2;
  HEAP32[$p$0 + 4 >> 2] = $psize$0 | 1;
  HEAP32[$p$0 + $psize$0 >> 2] = $psize$0;
  $psize$1 = $psize$0;
 }
 $231 = $psize$1 >>> 3;
 if ($psize$1 >>> 0 < 256) {
  $233 = $231 << 1;
  $234 = 3064 + ($233 << 2) | 0;
  $235 = HEAP32[756] | 0;
  $236 = 1 << $231;
  if (!($235 & $236)) {
   HEAP32[756] = $235 | $236;
   $$pre$phiZ2D = 3064 + ($233 + 2 << 2) | 0;
   $F16$0 = $234;
  } else {
   $240 = 3064 + ($233 + 2 << 2) | 0;
   $241 = HEAP32[$240 >> 2] | 0;
   if ($241 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    $$pre$phiZ2D = $240;
    $F16$0 = $241;
   }
  }
  HEAP32[$$pre$phiZ2D >> 2] = $p$0;
  HEAP32[$F16$0 + 12 >> 2] = $p$0;
  HEAP32[$p$0 + 8 >> 2] = $F16$0;
  HEAP32[$p$0 + 12 >> 2] = $234;
  return;
 }
 $247 = $psize$1 >>> 8;
 if (!$247) $I18$0 = 0; else if ($psize$1 >>> 0 > 16777215) $I18$0 = 31; else {
  $252 = ($247 + 1048320 | 0) >>> 16 & 8;
  $253 = $247 << $252;
  $256 = ($253 + 520192 | 0) >>> 16 & 4;
  $258 = $253 << $256;
  $261 = ($258 + 245760 | 0) >>> 16 & 2;
  $266 = 14 - ($256 | $252 | $261) + ($258 << $261 >>> 15) | 0;
  $I18$0 = $psize$1 >>> ($266 + 7 | 0) & 1 | $266 << 1;
 }
 $272 = 3328 + ($I18$0 << 2) | 0;
 HEAP32[$p$0 + 28 >> 2] = $I18$0;
 HEAP32[$p$0 + 20 >> 2] = 0;
 HEAP32[$p$0 + 16 >> 2] = 0;
 $276 = HEAP32[757] | 0;
 $277 = 1 << $I18$0;
 L199 : do if (!($276 & $277)) {
  HEAP32[757] = $276 | $277;
  HEAP32[$272 >> 2] = $p$0;
  HEAP32[$p$0 + 24 >> 2] = $272;
  HEAP32[$p$0 + 12 >> 2] = $p$0;
  HEAP32[$p$0 + 8 >> 2] = $p$0;
 } else {
  $284 = HEAP32[$272 >> 2] | 0;
  L202 : do if ((HEAP32[$284 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) $T$0$lcssa = $284; else {
   $K19$052 = $psize$1 << (($I18$0 | 0) == 31 ? 0 : 25 - ($I18$0 >>> 1) | 0);
   $T$051 = $284;
   while (1) {
    $301 = $T$051 + 16 + ($K19$052 >>> 31 << 2) | 0;
    $296 = HEAP32[$301 >> 2] | 0;
    if (!$296) {
     $$lcssa = $301;
     $T$051$lcssa = $T$051;
     break;
    }
    if ((HEAP32[$296 + 4 >> 2] & -8 | 0) == ($psize$1 | 0)) {
     $T$0$lcssa = $296;
     break L202;
    } else {
     $K19$052 = $K19$052 << 1;
     $T$051 = $296;
    }
   }
   if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    HEAP32[$$lcssa >> 2] = $p$0;
    HEAP32[$p$0 + 24 >> 2] = $T$051$lcssa;
    HEAP32[$p$0 + 12 >> 2] = $p$0;
    HEAP32[$p$0 + 8 >> 2] = $p$0;
    break L199;
   }
  } while (0);
  $308 = $T$0$lcssa + 8 | 0;
  $309 = HEAP32[$308 >> 2] | 0;
  $310 = HEAP32[760] | 0;
  if ($309 >>> 0 >= $310 >>> 0 & $T$0$lcssa >>> 0 >= $310 >>> 0) {
   HEAP32[$309 + 12 >> 2] = $p$0;
   HEAP32[$308 >> 2] = $p$0;
   HEAP32[$p$0 + 8 >> 2] = $309;
   HEAP32[$p$0 + 12 >> 2] = $T$0$lcssa;
   HEAP32[$p$0 + 24 >> 2] = 0;
   break;
  } else _abort();
 } while (0);
 $318 = (HEAP32[764] | 0) + -1 | 0;
 HEAP32[764] = $318;
 if (!$318) $sp$0$in$i = 3480; else return;
 while (1) {
  $sp$0$i = HEAP32[$sp$0$in$i >> 2] | 0;
  if (!$sp$0$i) break; else $sp$0$in$i = $sp$0$i + 8 | 0;
 }
 HEAP32[764] = -1;
 return;
}

function ___intscan($f, $base, $pok, $0, $1) {
 $f = $f | 0;
 $base = $base | 0;
 $pok = $pok | 0;
 $0 = $0 | 0;
 $1 = $1 | 0;
 var $$1 = 0, $$122 = 0, $$123 = 0, $$base21 = 0, $$lcssa = 0, $$lcssa130 = 0, $$lcssa131 = 0, $$lcssa132 = 0, $$lcssa133 = 0, $$lcssa134 = 0, $$lcssa135 = 0, $100 = 0, $101 = 0, $108 = 0, $120 = 0, $121 = 0, $128 = 0, $13 = 0, $130 = 0, $131 = 0, $134 = 0, $135 = 0, $136 = 0, $144 = 0, $149 = 0, $150 = 0, $152 = 0, $155 = 0, $157 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $166 = 0, $167 = 0, $168 = 0, $17 = 0, $18 = 0, $185 = 0, $186 = 0, $187 = 0, $195 = 0, $201 = 0, $203 = 0, $204 = 0, $206 = 0, $208 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $222 = 0, $223 = 0, $224 = 0, $239 = 0, $25 = 0, $250 = 0, $260 = 0, $262 = 0, $271 = 0, $272 = 0, $279 = 0, $281 = 0, $284 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $3 = 0, $37 = 0, $39 = 0, $4 = 0, $46 = 0, $5 = 0, $51 = 0, $6 = 0, $65 = 0, $67 = 0, $70 = 0, $71 = 0, $72 = 0, $83 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $90 = 0, $91 = 0, $93 = 0, $99 = 0, $c$0 = 0, $c$1 = 0, $c$124 = 0, $c$2$be = 0, $c$2$be$lcssa = 0, $c$2$lcssa = 0, $c$3$be = 0, $c$3$lcssa = 0, $c$371 = 0, $c$4$be = 0, $c$4$be$lcssa = 0, $c$4$lcssa = 0, $c$5$be = 0, $c$6$be = 0, $c$6$be$lcssa = 0, $c$6$lcssa = 0, $c$7$be = 0, $c$753 = 0, $c$8 = 0, $c$9$be = 0, $neg$0 = 0, $neg$1 = 0, $x$082 = 0, $x$146 = 0, $x$266 = 0, label = 0;
 L1 : do if ($base >>> 0 > 36) {
  $5 = ___errno_location() | 0;
  HEAP32[$5 >> 2] = 22;
  $286 = 0;
  $287 = 0;
 } else {
  $3 = $f + 4 | 0;
  $4 = $f + 100 | 0;
  do {
   $6 = HEAP32[$3 >> 2] | 0;
   if ($6 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
    HEAP32[$3 >> 2] = $6 + 1;
    $13 = HEAPU8[$6 >> 0] | 0;
   } else $13 = ___shgetc($f) | 0;
  } while ((_isspace($13) | 0) != 0);
  $$lcssa135 = $13;
  L11 : do switch ($$lcssa135 | 0) {
  case 43:
  case 45:
   {
    $17 = (($$lcssa135 | 0) == 45) << 31 >> 31;
    $18 = HEAP32[$3 >> 2] | 0;
    if ($18 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
     HEAP32[$3 >> 2] = $18 + 1;
     $c$0 = HEAPU8[$18 >> 0] | 0;
     $neg$0 = $17;
     break L11;
    } else {
     $c$0 = ___shgetc($f) | 0;
     $neg$0 = $17;
     break L11;
    }
    break;
   }
  default:
   {
    $c$0 = $$lcssa135;
    $neg$0 = 0;
   }
  } while (0);
  $25 = ($base | 0) == 0;
  do if (($base & -17 | 0) == 0 & ($c$0 | 0) == 48) {
   $29 = HEAP32[$3 >> 2] | 0;
   if ($29 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
    HEAP32[$3 >> 2] = $29 + 1;
    $37 = HEAPU8[$29 >> 0] | 0;
   } else $37 = ___shgetc($f) | 0;
   if (($37 | 32 | 0) != 120) if ($25) {
    $$123 = 8;
    $c$124 = $37;
    label = 46;
    break;
   } else {
    $$1 = $base;
    $c$1 = $37;
    label = 32;
    break;
   }
   $39 = HEAP32[$3 >> 2] | 0;
   if ($39 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
    HEAP32[$3 >> 2] = $39 + 1;
    $46 = HEAPU8[$39 >> 0] | 0;
   } else $46 = ___shgetc($f) | 0;
   if ((HEAPU8[16493 + ($46 + 1) >> 0] | 0) > 15) {
    $51 = (HEAP32[$4 >> 2] | 0) == 0;
    if (!$51) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;
    if (!$pok) {
     ___shlim($f, 0);
     $286 = 0;
     $287 = 0;
     break L1;
    }
    if ($51) {
     $286 = 0;
     $287 = 0;
     break L1;
    }
    HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;
    $286 = 0;
    $287 = 0;
    break L1;
   } else {
    $$123 = 16;
    $c$124 = $46;
    label = 46;
   }
  } else {
   $$base21 = $25 ? 10 : $base;
   if ((HEAPU8[16493 + ($c$0 + 1) >> 0] | 0) >>> 0 < $$base21 >>> 0) {
    $$1 = $$base21;
    $c$1 = $c$0;
    label = 32;
   } else {
    if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;
    ___shlim($f, 0);
    $65 = ___errno_location() | 0;
    HEAP32[$65 >> 2] = 22;
    $286 = 0;
    $287 = 0;
    break L1;
   }
  } while (0);
  if ((label | 0) == 32) if (($$1 | 0) == 10) {
   $67 = $c$1 + -48 | 0;
   if ($67 >>> 0 < 10) {
    $71 = $67;
    $x$082 = 0;
    while (1) {
     $70 = ($x$082 * 10 | 0) + $71 | 0;
     $72 = HEAP32[$3 >> 2] | 0;
     if ($72 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
      HEAP32[$3 >> 2] = $72 + 1;
      $c$2$be = HEAPU8[$72 >> 0] | 0;
     } else $c$2$be = ___shgetc($f) | 0;
     $71 = $c$2$be + -48 | 0;
     if (!($71 >>> 0 < 10 & $70 >>> 0 < 429496729)) {
      $$lcssa134 = $70;
      $c$2$be$lcssa = $c$2$be;
      break;
     } else $x$082 = $70;
    }
    $288 = $$lcssa134;
    $289 = 0;
    $c$2$lcssa = $c$2$be$lcssa;
   } else {
    $288 = 0;
    $289 = 0;
    $c$2$lcssa = $c$1;
   }
   $83 = $c$2$lcssa + -48 | 0;
   if ($83 >>> 0 < 10) {
    $85 = $288;
    $86 = $289;
    $90 = $83;
    $c$371 = $c$2$lcssa;
    while (1) {
     $87 = ___muldi3($85 | 0, $86 | 0, 10, 0) | 0;
     $88 = tempRet0;
     $91 = (($90 | 0) < 0) << 31 >> 31;
     $93 = ~$91;
     if ($88 >>> 0 > $93 >>> 0 | ($88 | 0) == ($93 | 0) & $87 >>> 0 > ~$90 >>> 0) {
      $$lcssa = $90;
      $290 = $85;
      $291 = $86;
      $c$3$lcssa = $c$371;
      break;
     }
     $99 = _i64Add($87 | 0, $88 | 0, $90 | 0, $91 | 0) | 0;
     $100 = tempRet0;
     $101 = HEAP32[$3 >> 2] | 0;
     if ($101 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
      HEAP32[$3 >> 2] = $101 + 1;
      $c$3$be = HEAPU8[$101 >> 0] | 0;
     } else $c$3$be = ___shgetc($f) | 0;
     $108 = $c$3$be + -48 | 0;
     if ($108 >>> 0 < 10 & ($100 >>> 0 < 429496729 | ($100 | 0) == 429496729 & $99 >>> 0 < 2576980378)) {
      $85 = $99;
      $86 = $100;
      $90 = $108;
      $c$371 = $c$3$be;
     } else {
      $$lcssa = $108;
      $290 = $99;
      $291 = $100;
      $c$3$lcssa = $c$3$be;
      break;
     }
    }
    if ($$lcssa >>> 0 > 9) {
     $260 = $291;
     $262 = $290;
     $neg$1 = $neg$0;
    } else {
     $$122 = 10;
     $292 = $290;
     $293 = $291;
     $c$8 = $c$3$lcssa;
     label = 72;
    }
   } else {
    $260 = $289;
    $262 = $288;
    $neg$1 = $neg$0;
   }
  } else {
   $$123 = $$1;
   $c$124 = $c$1;
   label = 46;
  }
  L63 : do if ((label | 0) == 46) {
   if (!($$123 + -1 & $$123)) {
    $128 = HEAP8[16750 + (($$123 * 23 | 0) >>> 5 & 7) >> 0] | 0;
    $130 = HEAP8[16493 + ($c$124 + 1) >> 0] | 0;
    $131 = $130 & 255;
    if ($131 >>> 0 < $$123 >>> 0) {
     $135 = $131;
     $x$146 = 0;
     while (1) {
      $134 = $135 | $x$146 << $128;
      $136 = HEAP32[$3 >> 2] | 0;
      if ($136 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
       HEAP32[$3 >> 2] = $136 + 1;
       $c$4$be = HEAPU8[$136 >> 0] | 0;
      } else $c$4$be = ___shgetc($f) | 0;
      $144 = HEAP8[16493 + ($c$4$be + 1) >> 0] | 0;
      $135 = $144 & 255;
      if (!($134 >>> 0 < 134217728 & $135 >>> 0 < $$123 >>> 0)) {
       $$lcssa130 = $134;
       $$lcssa131 = $144;
       $c$4$be$lcssa = $c$4$be;
       break;
      } else $x$146 = $134;
     }
     $152 = $$lcssa131;
     $155 = 0;
     $157 = $$lcssa130;
     $c$4$lcssa = $c$4$be$lcssa;
    } else {
     $152 = $130;
     $155 = 0;
     $157 = 0;
     $c$4$lcssa = $c$124;
    }
    $149 = _bitshift64Lshr(-1, -1, $128 | 0) | 0;
    $150 = tempRet0;
    if (($152 & 255) >>> 0 >= $$123 >>> 0 | ($155 >>> 0 > $150 >>> 0 | ($155 | 0) == ($150 | 0) & $157 >>> 0 > $149 >>> 0)) {
     $$122 = $$123;
     $292 = $157;
     $293 = $155;
     $c$8 = $c$4$lcssa;
     label = 72;
     break;
    } else {
     $161 = $157;
     $162 = $155;
     $166 = $152;
    }
    while (1) {
     $163 = _bitshift64Shl($161 | 0, $162 | 0, $128 | 0) | 0;
     $164 = tempRet0;
     $167 = $166 & 255 | $163;
     $168 = HEAP32[$3 >> 2] | 0;
     if ($168 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
      HEAP32[$3 >> 2] = $168 + 1;
      $c$5$be = HEAPU8[$168 >> 0] | 0;
     } else $c$5$be = ___shgetc($f) | 0;
     $166 = HEAP8[16493 + ($c$5$be + 1) >> 0] | 0;
     if (($166 & 255) >>> 0 >= $$123 >>> 0 | ($164 >>> 0 > $150 >>> 0 | ($164 | 0) == ($150 | 0) & $167 >>> 0 > $149 >>> 0)) {
      $$122 = $$123;
      $292 = $167;
      $293 = $164;
      $c$8 = $c$5$be;
      label = 72;
      break L63;
     } else {
      $161 = $167;
      $162 = $164;
     }
    }
   }
   $120 = HEAP8[16493 + ($c$124 + 1) >> 0] | 0;
   $121 = $120 & 255;
   if ($121 >>> 0 < $$123 >>> 0) {
    $186 = $121;
    $x$266 = 0;
    while (1) {
     $185 = $186 + (Math_imul($x$266, $$123) | 0) | 0;
     $187 = HEAP32[$3 >> 2] | 0;
     if ($187 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
      HEAP32[$3 >> 2] = $187 + 1;
      $c$6$be = HEAPU8[$187 >> 0] | 0;
     } else $c$6$be = ___shgetc($f) | 0;
     $195 = HEAP8[16493 + ($c$6$be + 1) >> 0] | 0;
     $186 = $195 & 255;
     if (!($185 >>> 0 < 119304647 & $186 >>> 0 < $$123 >>> 0)) {
      $$lcssa132 = $185;
      $$lcssa133 = $195;
      $c$6$be$lcssa = $c$6$be;
      break;
     } else $x$266 = $185;
    }
    $201 = $$lcssa133;
    $294 = $$lcssa132;
    $295 = 0;
    $c$6$lcssa = $c$6$be$lcssa;
   } else {
    $201 = $120;
    $294 = 0;
    $295 = 0;
    $c$6$lcssa = $c$124;
   }
   if (($201 & 255) >>> 0 < $$123 >>> 0) {
    $203 = ___udivdi3(-1, -1, $$123 | 0, 0) | 0;
    $204 = tempRet0;
    $206 = $295;
    $208 = $294;
    $215 = $201;
    $c$753 = $c$6$lcssa;
    while (1) {
     if ($206 >>> 0 > $204 >>> 0 | ($206 | 0) == ($204 | 0) & $208 >>> 0 > $203 >>> 0) {
      $$122 = $$123;
      $292 = $208;
      $293 = $206;
      $c$8 = $c$753;
      label = 72;
      break L63;
     }
     $212 = ___muldi3($208 | 0, $206 | 0, $$123 | 0, 0) | 0;
     $213 = tempRet0;
     $214 = $215 & 255;
     if ($213 >>> 0 > 4294967295 | ($213 | 0) == -1 & $212 >>> 0 > ~$214 >>> 0) {
      $$122 = $$123;
      $292 = $208;
      $293 = $206;
      $c$8 = $c$753;
      label = 72;
      break L63;
     }
     $222 = _i64Add($214 | 0, 0, $212 | 0, $213 | 0) | 0;
     $223 = tempRet0;
     $224 = HEAP32[$3 >> 2] | 0;
     if ($224 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
      HEAP32[$3 >> 2] = $224 + 1;
      $c$7$be = HEAPU8[$224 >> 0] | 0;
     } else $c$7$be = ___shgetc($f) | 0;
     $215 = HEAP8[16493 + ($c$7$be + 1) >> 0] | 0;
     if (($215 & 255) >>> 0 >= $$123 >>> 0) {
      $$122 = $$123;
      $292 = $222;
      $293 = $223;
      $c$8 = $c$7$be;
      label = 72;
      break;
     } else {
      $206 = $223;
      $208 = $222;
      $c$753 = $c$7$be;
     }
    }
   } else {
    $$122 = $$123;
    $292 = $294;
    $293 = $295;
    $c$8 = $c$6$lcssa;
    label = 72;
   }
  } while (0);
  if ((label | 0) == 72) if ((HEAPU8[16493 + ($c$8 + 1) >> 0] | 0) >>> 0 < $$122 >>> 0) {
   do {
    $239 = HEAP32[$3 >> 2] | 0;
    if ($239 >>> 0 < (HEAP32[$4 >> 2] | 0) >>> 0) {
     HEAP32[$3 >> 2] = $239 + 1;
     $c$9$be = HEAPU8[$239 >> 0] | 0;
    } else $c$9$be = ___shgetc($f) | 0;
   } while ((HEAPU8[16493 + ($c$9$be + 1) >> 0] | 0) >>> 0 < $$122 >>> 0);
   $250 = ___errno_location() | 0;
   HEAP32[$250 >> 2] = 34;
   $260 = $1;
   $262 = $0;
   $neg$1 = ($0 & 1 | 0) == 0 & 0 == 0 ? $neg$0 : 0;
  } else {
   $260 = $293;
   $262 = $292;
   $neg$1 = $neg$0;
  }
  if (HEAP32[$4 >> 2] | 0) HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -1;
  if (!($260 >>> 0 < $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 < $0 >>> 0)) {
   if (!(($0 & 1 | 0) != 0 | 0 != 0 | ($neg$1 | 0) != 0)) {
    $271 = ___errno_location() | 0;
    HEAP32[$271 >> 2] = 34;
    $272 = _i64Add($0 | 0, $1 | 0, -1, -1) | 0;
    $286 = tempRet0;
    $287 = $272;
    break;
   }
   if ($260 >>> 0 > $1 >>> 0 | ($260 | 0) == ($1 | 0) & $262 >>> 0 > $0 >>> 0) {
    $279 = ___errno_location() | 0;
    HEAP32[$279 >> 2] = 34;
    $286 = $1;
    $287 = $0;
    break;
   }
  }
  $281 = (($neg$1 | 0) < 0) << 31 >> 31;
  $284 = _i64Subtract($262 ^ $neg$1 | 0, $260 ^ $281 | 0, $neg$1 | 0, $281 | 0) | 0;
  $286 = tempRet0;
  $287 = $284;
 } while (0);
 tempRet0 = $286;
 return $287 | 0;
}

function _dispose_chunk($p, $psize) {
 $p = $p | 0;
 $psize = $psize | 0;
 var $$0 = 0, $$02 = 0, $$1 = 0, $$lcssa = 0, $$pre$phi50Z2D = 0, $$pre$phi52Z2D = 0, $$pre$phiZ2D = 0, $$sum18 = 0, $$sum21 = 0, $0 = 0, $10 = 0, $100 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0, $115 = 0, $123 = 0, $128 = 0, $129 = 0, $132 = 0, $134 = 0, $136 = 0, $149 = 0, $15 = 0, $154 = 0, $156 = 0, $159 = 0, $161 = 0, $164 = 0, $167 = 0, $168 = 0, $170 = 0, $171 = 0, $173 = 0, $174 = 0, $176 = 0, $177 = 0, $18 = 0, $182 = 0, $183 = 0, $192 = 0, $197 = 0, $2 = 0, $20 = 0, $201 = 0, $207 = 0, $22 = 0, $222 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $231 = 0, $232 = 0, $238 = 0, $243 = 0, $244 = 0, $247 = 0, $249 = 0, $252 = 0, $257 = 0, $263 = 0, $267 = 0, $268 = 0, $275 = 0, $287 = 0, $292 = 0, $299 = 0, $300 = 0, $301 = 0, $35 = 0, $40 = 0, $42 = 0, $45 = 0, $47 = 0, $5 = 0, $50 = 0, $53 = 0, $54 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $62 = 0, $63 = 0, $68 = 0, $69 = 0, $78 = 0, $83 = 0, $87 = 0, $9 = 0, $93 = 0, $99 = 0, $F16$0 = 0, $I19$0 = 0, $K20$043 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$042 = 0, $T$042$lcssa = 0;
 $0 = $p + $psize | 0;
 $2 = HEAP32[$p + 4 >> 2] | 0;
 do if (!($2 & 1)) {
  $5 = HEAP32[$p >> 2] | 0;
  if (!($2 & 3)) return;
  $9 = $p + (0 - $5) | 0;
  $10 = $5 + $psize | 0;
  $11 = HEAP32[760] | 0;
  if ($9 >>> 0 < $11 >>> 0) _abort();
  if (($9 | 0) == (HEAP32[761] | 0)) {
   $99 = $p + ($psize + 4) | 0;
   $100 = HEAP32[$99 >> 2] | 0;
   if (($100 & 3 | 0) != 3) {
    $$0 = $9;
    $$02 = $10;
    break;
   }
   HEAP32[758] = $10;
   HEAP32[$99 >> 2] = $100 & -2;
   HEAP32[$p + (4 - $5) >> 2] = $10 | 1;
   HEAP32[$0 >> 2] = $10;
   return;
  }
  $15 = $5 >>> 3;
  if ($5 >>> 0 < 256) {
   $18 = HEAP32[$p + (8 - $5) >> 2] | 0;
   $20 = HEAP32[$p + (12 - $5) >> 2] | 0;
   $22 = 3064 + ($15 << 1 << 2) | 0;
   if (($18 | 0) != ($22 | 0)) {
    if ($18 >>> 0 < $11 >>> 0) _abort();
    if ((HEAP32[$18 + 12 >> 2] | 0) != ($9 | 0)) _abort();
   }
   if (($20 | 0) == ($18 | 0)) {
    HEAP32[756] = HEAP32[756] & ~(1 << $15);
    $$0 = $9;
    $$02 = $10;
    break;
   }
   if (($20 | 0) == ($22 | 0)) $$pre$phi52Z2D = $20 + 8 | 0; else {
    if ($20 >>> 0 < $11 >>> 0) _abort();
    $35 = $20 + 8 | 0;
    if ((HEAP32[$35 >> 2] | 0) == ($9 | 0)) $$pre$phi52Z2D = $35; else _abort();
   }
   HEAP32[$18 + 12 >> 2] = $20;
   HEAP32[$$pre$phi52Z2D >> 2] = $18;
   $$0 = $9;
   $$02 = $10;
   break;
  }
  $40 = HEAP32[$p + (24 - $5) >> 2] | 0;
  $42 = HEAP32[$p + (12 - $5) >> 2] | 0;
  do if (($42 | 0) == ($9 | 0)) {
   $$sum18 = 16 - $5 | 0;
   $53 = $p + ($$sum18 + 4) | 0;
   $54 = HEAP32[$53 >> 2] | 0;
   if (!$54) {
    $56 = $p + $$sum18 | 0;
    $57 = HEAP32[$56 >> 2] | 0;
    if (!$57) {
     $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;
    if ($60) {
     $R$0 = $60;
     $RP$0 = $59;
     continue;
    }
    $62 = $R$0 + 16 | 0;
    $63 = HEAP32[$62 >> 2] | 0;
    if (!$63) {
     $R$0$lcssa = $R$0;
     $RP$0$lcssa = $RP$0;
     break;
    } else {
     $R$0 = $63;
     $RP$0 = $62;
    }
   }
   if ($RP$0$lcssa >>> 0 < $11 >>> 0) _abort(); else {
    HEAP32[$RP$0$lcssa >> 2] = 0;
    $R$1 = $R$0$lcssa;
    break;
   }
  } else {
   $45 = HEAP32[$p + (8 - $5) >> 2] | 0;
   if ($45 >>> 0 < $11 >>> 0) _abort();
   $47 = $45 + 12 | 0;
   if ((HEAP32[$47 >> 2] | 0) != ($9 | 0)) _abort();
   $50 = $42 + 8 | 0;
   if ((HEAP32[$50 >> 2] | 0) == ($9 | 0)) {
    HEAP32[$47 >> 2] = $42;
    HEAP32[$50 >> 2] = $45;
    $R$1 = $42;
    break;
   } else _abort();
  } while (0);
  if (!$40) {
   $$0 = $9;
   $$02 = $10;
  } else {
   $68 = HEAP32[$p + (28 - $5) >> 2] | 0;
   $69 = 3328 + ($68 << 2) | 0;
   if (($9 | 0) == (HEAP32[$69 >> 2] | 0)) {
    HEAP32[$69 >> 2] = $R$1;
    if (!$R$1) {
     HEAP32[757] = HEAP32[757] & ~(1 << $68);
     $$0 = $9;
     $$02 = $10;
     break;
    }
   } else {
    if ($40 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $78 = $40 + 16 | 0;
    if ((HEAP32[$78 >> 2] | 0) == ($9 | 0)) HEAP32[$78 >> 2] = $R$1; else HEAP32[$40 + 20 >> 2] = $R$1;
    if (!$R$1) {
     $$0 = $9;
     $$02 = $10;
     break;
    }
   }
   $83 = HEAP32[760] | 0;
   if ($R$1 >>> 0 < $83 >>> 0) _abort();
   HEAP32[$R$1 + 24 >> 2] = $40;
   $$sum21 = 16 - $5 | 0;
   $87 = HEAP32[$p + $$sum21 >> 2] | 0;
   do if ($87) if ($87 >>> 0 < $83 >>> 0) _abort(); else {
    HEAP32[$R$1 + 16 >> 2] = $87;
    HEAP32[$87 + 24 >> 2] = $R$1;
    break;
   } while (0);
   $93 = HEAP32[$p + ($$sum21 + 4) >> 2] | 0;
   if (!$93) {
    $$0 = $9;
    $$02 = $10;
   } else if ($93 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    HEAP32[$R$1 + 20 >> 2] = $93;
    HEAP32[$93 + 24 >> 2] = $R$1;
    $$0 = $9;
    $$02 = $10;
    break;
   }
  }
 } else {
  $$0 = $p;
  $$02 = $psize;
 } while (0);
 $106 = HEAP32[760] | 0;
 if ($0 >>> 0 < $106 >>> 0) _abort();
 $108 = $p + ($psize + 4) | 0;
 $109 = HEAP32[$108 >> 2] | 0;
 if (!($109 & 2)) {
  if (($0 | 0) == (HEAP32[762] | 0)) {
   $115 = (HEAP32[759] | 0) + $$02 | 0;
   HEAP32[759] = $115;
   HEAP32[762] = $$0;
   HEAP32[$$0 + 4 >> 2] = $115 | 1;
   if (($$0 | 0) != (HEAP32[761] | 0)) return;
   HEAP32[761] = 0;
   HEAP32[758] = 0;
   return;
  }
  if (($0 | 0) == (HEAP32[761] | 0)) {
   $123 = (HEAP32[758] | 0) + $$02 | 0;
   HEAP32[758] = $123;
   HEAP32[761] = $$0;
   HEAP32[$$0 + 4 >> 2] = $123 | 1;
   HEAP32[$$0 + $123 >> 2] = $123;
   return;
  }
  $128 = ($109 & -8) + $$02 | 0;
  $129 = $109 >>> 3;
  do if ($109 >>> 0 < 256) {
   $132 = HEAP32[$p + ($psize + 8) >> 2] | 0;
   $134 = HEAP32[$p + ($psize + 12) >> 2] | 0;
   $136 = 3064 + ($129 << 1 << 2) | 0;
   if (($132 | 0) != ($136 | 0)) {
    if ($132 >>> 0 < $106 >>> 0) _abort();
    if ((HEAP32[$132 + 12 >> 2] | 0) != ($0 | 0)) _abort();
   }
   if (($134 | 0) == ($132 | 0)) {
    HEAP32[756] = HEAP32[756] & ~(1 << $129);
    break;
   }
   if (($134 | 0) == ($136 | 0)) $$pre$phi50Z2D = $134 + 8 | 0; else {
    if ($134 >>> 0 < $106 >>> 0) _abort();
    $149 = $134 + 8 | 0;
    if ((HEAP32[$149 >> 2] | 0) == ($0 | 0)) $$pre$phi50Z2D = $149; else _abort();
   }
   HEAP32[$132 + 12 >> 2] = $134;
   HEAP32[$$pre$phi50Z2D >> 2] = $132;
  } else {
   $154 = HEAP32[$p + ($psize + 24) >> 2] | 0;
   $156 = HEAP32[$p + ($psize + 12) >> 2] | 0;
   do if (($156 | 0) == ($0 | 0)) {
    $167 = $p + ($psize + 20) | 0;
    $168 = HEAP32[$167 >> 2] | 0;
    if (!$168) {
     $170 = $p + ($psize + 16) | 0;
     $171 = HEAP32[$170 >> 2] | 0;
     if (!$171) {
      $R7$1 = 0;
      break;
     } else {
      $R7$0 = $171;
      $RP9$0 = $170;
     }
    } else {
     $R7$0 = $168;
     $RP9$0 = $167;
    }
    while (1) {
     $173 = $R7$0 + 20 | 0;
     $174 = HEAP32[$173 >> 2] | 0;
     if ($174) {
      $R7$0 = $174;
      $RP9$0 = $173;
      continue;
     }
     $176 = $R7$0 + 16 | 0;
     $177 = HEAP32[$176 >> 2] | 0;
     if (!$177) {
      $R7$0$lcssa = $R7$0;
      $RP9$0$lcssa = $RP9$0;
      break;
     } else {
      $R7$0 = $177;
      $RP9$0 = $176;
     }
    }
    if ($RP9$0$lcssa >>> 0 < $106 >>> 0) _abort(); else {
     HEAP32[$RP9$0$lcssa >> 2] = 0;
     $R7$1 = $R7$0$lcssa;
     break;
    }
   } else {
    $159 = HEAP32[$p + ($psize + 8) >> 2] | 0;
    if ($159 >>> 0 < $106 >>> 0) _abort();
    $161 = $159 + 12 | 0;
    if ((HEAP32[$161 >> 2] | 0) != ($0 | 0)) _abort();
    $164 = $156 + 8 | 0;
    if ((HEAP32[$164 >> 2] | 0) == ($0 | 0)) {
     HEAP32[$161 >> 2] = $156;
     HEAP32[$164 >> 2] = $159;
     $R7$1 = $156;
     break;
    } else _abort();
   } while (0);
   if ($154) {
    $182 = HEAP32[$p + ($psize + 28) >> 2] | 0;
    $183 = 3328 + ($182 << 2) | 0;
    if (($0 | 0) == (HEAP32[$183 >> 2] | 0)) {
     HEAP32[$183 >> 2] = $R7$1;
     if (!$R7$1) {
      HEAP32[757] = HEAP32[757] & ~(1 << $182);
      break;
     }
    } else {
     if ($154 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
     $192 = $154 + 16 | 0;
     if ((HEAP32[$192 >> 2] | 0) == ($0 | 0)) HEAP32[$192 >> 2] = $R7$1; else HEAP32[$154 + 20 >> 2] = $R7$1;
     if (!$R7$1) break;
    }
    $197 = HEAP32[760] | 0;
    if ($R7$1 >>> 0 < $197 >>> 0) _abort();
    HEAP32[$R7$1 + 24 >> 2] = $154;
    $201 = HEAP32[$p + ($psize + 16) >> 2] | 0;
    do if ($201) if ($201 >>> 0 < $197 >>> 0) _abort(); else {
     HEAP32[$R7$1 + 16 >> 2] = $201;
     HEAP32[$201 + 24 >> 2] = $R7$1;
     break;
    } while (0);
    $207 = HEAP32[$p + ($psize + 20) >> 2] | 0;
    if ($207) if ($207 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
     HEAP32[$R7$1 + 20 >> 2] = $207;
     HEAP32[$207 + 24 >> 2] = $R7$1;
     break;
    }
   }
  } while (0);
  HEAP32[$$0 + 4 >> 2] = $128 | 1;
  HEAP32[$$0 + $128 >> 2] = $128;
  if (($$0 | 0) == (HEAP32[761] | 0)) {
   HEAP32[758] = $128;
   return;
  } else $$1 = $128;
 } else {
  HEAP32[$108 >> 2] = $109 & -2;
  HEAP32[$$0 + 4 >> 2] = $$02 | 1;
  HEAP32[$$0 + $$02 >> 2] = $$02;
  $$1 = $$02;
 }
 $222 = $$1 >>> 3;
 if ($$1 >>> 0 < 256) {
  $224 = $222 << 1;
  $225 = 3064 + ($224 << 2) | 0;
  $226 = HEAP32[756] | 0;
  $227 = 1 << $222;
  if (!($226 & $227)) {
   HEAP32[756] = $226 | $227;
   $$pre$phiZ2D = 3064 + ($224 + 2 << 2) | 0;
   $F16$0 = $225;
  } else {
   $231 = 3064 + ($224 + 2 << 2) | 0;
   $232 = HEAP32[$231 >> 2] | 0;
   if ($232 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    $$pre$phiZ2D = $231;
    $F16$0 = $232;
   }
  }
  HEAP32[$$pre$phiZ2D >> 2] = $$0;
  HEAP32[$F16$0 + 12 >> 2] = $$0;
  HEAP32[$$0 + 8 >> 2] = $F16$0;
  HEAP32[$$0 + 12 >> 2] = $225;
  return;
 }
 $238 = $$1 >>> 8;
 if (!$238) $I19$0 = 0; else if ($$1 >>> 0 > 16777215) $I19$0 = 31; else {
  $243 = ($238 + 1048320 | 0) >>> 16 & 8;
  $244 = $238 << $243;
  $247 = ($244 + 520192 | 0) >>> 16 & 4;
  $249 = $244 << $247;
  $252 = ($249 + 245760 | 0) >>> 16 & 2;
  $257 = 14 - ($247 | $243 | $252) + ($249 << $252 >>> 15) | 0;
  $I19$0 = $$1 >>> ($257 + 7 | 0) & 1 | $257 << 1;
 }
 $263 = 3328 + ($I19$0 << 2) | 0;
 HEAP32[$$0 + 28 >> 2] = $I19$0;
 HEAP32[$$0 + 20 >> 2] = 0;
 HEAP32[$$0 + 16 >> 2] = 0;
 $267 = HEAP32[757] | 0;
 $268 = 1 << $I19$0;
 if (!($267 & $268)) {
  HEAP32[757] = $267 | $268;
  HEAP32[$263 >> 2] = $$0;
  HEAP32[$$0 + 24 >> 2] = $263;
  HEAP32[$$0 + 12 >> 2] = $$0;
  HEAP32[$$0 + 8 >> 2] = $$0;
  return;
 }
 $275 = HEAP32[$263 >> 2] | 0;
 L191 : do if ((HEAP32[$275 + 4 >> 2] & -8 | 0) == ($$1 | 0)) $T$0$lcssa = $275; else {
  $K20$043 = $$1 << (($I19$0 | 0) == 31 ? 0 : 25 - ($I19$0 >>> 1) | 0);
  $T$042 = $275;
  while (1) {
   $292 = $T$042 + 16 + ($K20$043 >>> 31 << 2) | 0;
   $287 = HEAP32[$292 >> 2] | 0;
   if (!$287) {
    $$lcssa = $292;
    $T$042$lcssa = $T$042;
    break;
   }
   if ((HEAP32[$287 + 4 >> 2] & -8 | 0) == ($$1 | 0)) {
    $T$0$lcssa = $287;
    break L191;
   } else {
    $K20$043 = $K20$043 << 1;
    $T$042 = $287;
   }
  }
  if ($$lcssa >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
  HEAP32[$$lcssa >> 2] = $$0;
  HEAP32[$$0 + 24 >> 2] = $T$042$lcssa;
  HEAP32[$$0 + 12 >> 2] = $$0;
  HEAP32[$$0 + 8 >> 2] = $$0;
  return;
 } while (0);
 $299 = $T$0$lcssa + 8 | 0;
 $300 = HEAP32[$299 >> 2] | 0;
 $301 = HEAP32[760] | 0;
 if (!($300 >>> 0 >= $301 >>> 0 & $T$0$lcssa >>> 0 >= $301 >>> 0)) _abort();
 HEAP32[$300 + 12 >> 2] = $$0;
 HEAP32[$299 >> 2] = $$0;
 HEAP32[$$0 + 8 >> 2] = $300;
 HEAP32[$$0 + 12 >> 2] = $T$0$lcssa;
 HEAP32[$$0 + 24 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i15 = 0, $$0$i$i$i7 = 0, $$0$i$i$i9 = 0, $$0$i$i58 = 0, $$lcssa81 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $114 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $120 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $135 = 0, $138 = 0, $141 = 0, $148 = 0, $15 = 0, $150 = 0, $157 = 0, $158 = 0, $167 = 0, $168 = 0, $170 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $184 = 0, $186 = 0, $189 = 0, $190 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $30 = 0, $33 = 0, $4 = 0, $41 = 0, $42 = 0, $43 = 0, $46 = 0, $49 = 0, $56 = 0, $58 = 0, $61 = 0, $62 = 0, $64 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $78 = 0, $80 = 0, $83 = 0, $84 = 0, $89 = 0, $91 = 0, $__p$0$i$i57 = 0, $__p$0$ph$i$i = 0, $__v$i$i13 = 0, $isdigittmp = 0, $isdigittmp4 = 0, $sub$061 = 0, $sub$061$lcssa = 0, $t1$060 = 0, $t1$060$lcssa = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i13 = sp + 64 | 0;
 $0 = sp + 40 | 0;
 $1 = sp + 16 | 0;
 $2 = sp;
 $4 = $first;
 L1 : do if (($last - $4 | 0) > 1) if ((HEAP8[$first >> 0] | 0) == 84) {
  $10 = HEAP8[$first + 1 >> 0] | 0;
  if ($10 << 24 >> 24 == 95) {
   $15 = HEAP32[$db + 36 >> 2] | 0;
   if ((HEAP32[$db + 32 >> 2] | 0) == ($15 | 0)) {
    $$0 = $first;
    break;
   }
   $18 = HEAP32[$15 + -16 >> 2] | 0;
   if (($18 | 0) == (HEAP32[$15 + -12 >> 2] | 0)) {
    HEAP8[$0 >> 0] = 4;
    $56 = $0 + 1 | 0;
    HEAP8[$56 >> 0] = 84;
    HEAP8[$56 + 1 >> 0] = 95;
    HEAP8[$0 + 3 >> 0] = 0;
    $58 = $0 + 12 | 0;
    HEAP32[$58 >> 2] = 0;
    HEAP32[$58 + 4 >> 2] = 0;
    HEAP32[$58 + 8 >> 2] = 0;
    $61 = $db + 4 | 0;
    $62 = HEAP32[$61 >> 2] | 0;
    $64 = HEAP32[$db + 8 >> 2] | 0;
    if ($62 >>> 0 < $64 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($62, $0);
     HEAP32[$61 >> 2] = (HEAP32[$61 >> 2] | 0) + 24;
    } else {
     $71 = HEAP32[$db >> 2] | 0;
     $72 = $62 - $71 | 0;
     $73 = ($72 | 0) / 24 | 0;
     $74 = $73 + 1 | 0;
     if (($72 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $78 = ($64 - $71 | 0) / 24 | 0;
     if ($78 >>> 0 < 1073741823) {
      $80 = $78 << 1;
      $$0$i$i$i9 = $80 >>> 0 < $74 >>> 0 ? $74 : $80;
     } else $$0$i$i$i9 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i9, $73, $db + 12 | 0);
     $83 = $__v$i$i13 + 8 | 0;
     $84 = HEAP32[$83 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($84, $0);
     HEAP32[$83 >> 2] = $84 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
    HEAP8[$db + 62 >> 0] = 1;
    $$0 = $first + 2 | 0;
    break;
   }
   $22 = HEAP32[$18 >> 2] | 0;
   $24 = HEAP32[$18 + 4 >> 2] | 0;
   $25 = $db + 4 | 0;
   $26 = $db + 8 | 0;
   $27 = $db + 12 | 0;
   $28 = $__v$i$i13 + 8 | 0;
   L20 : do if (($22 | 0) != ($24 | 0)) {
    $33 = $22;
    while (1) {
     $30 = HEAP32[$25 >> 2] | 0;
     if (($30 | 0) == (HEAP32[$26 >> 2] | 0)) {
      $41 = $30 - (HEAP32[$db >> 2] | 0) | 0;
      $42 = ($41 | 0) / 24 | 0;
      $43 = $42 + 1 | 0;
      if (($41 | 0) < -24) break;
      if ($42 >>> 0 < 1073741823) {
       $46 = $42 << 1;
       $$0$i$i$i7 = $46 >>> 0 < $43 >>> 0 ? $43 : $46;
      } else $$0$i$i$i7 = 2147483647;
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i7, $42, $27);
      $49 = HEAP32[$28 >> 2] | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49, $33);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($49 + 12 | 0, $33 + 12 | 0);
      HEAP32[$28 >> 2] = $49 + 24;
      __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);
      __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);
     } else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30, $33);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($30 + 12 | 0, $33 + 12 | 0);
      HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 24;
     }
     $33 = $33 + 24 | 0;
     if (($33 | 0) == ($24 | 0)) break L20;
    }
    __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
   } while (0);
   $$0 = $first + 2 | 0;
   break;
  }
  $isdigittmp = ($10 << 24 >> 24) + -48 | 0;
  if ($isdigittmp >>> 0 < 10) {
   $89 = $first + 2 | 0;
   if (($89 | 0) == ($last | 0)) $$0 = $first; else {
    $sub$061 = $isdigittmp;
    $t1$060 = $89;
    while (1) {
     $91 = HEAP8[$t1$060 >> 0] | 0;
     $isdigittmp4 = ($91 << 24 >> 24) + -48 | 0;
     if ($isdigittmp4 >>> 0 >= 10) {
      $$lcssa81 = $91;
      $sub$061$lcssa = $sub$061;
      $t1$060$lcssa = $t1$060;
      break;
     }
     $t1$060 = $t1$060 + 1 | 0;
     if (($t1$060 | 0) == ($last | 0)) {
      $$0 = $first;
      break L1;
     } else $sub$061 = $isdigittmp4 + ($sub$061 * 10 | 0) | 0;
    }
    if ($$lcssa81 << 24 >> 24 == 95) {
     $101 = HEAP32[$db + 36 >> 2] | 0;
     if ((HEAP32[$db + 32 >> 2] | 0) == ($101 | 0)) $$0 = $first; else {
      $103 = $sub$061$lcssa + 1 | 0;
      $107 = HEAP32[$101 + -16 >> 2] | 0;
      if ($103 >>> 0 < (HEAP32[$101 + -12 >> 2] | 0) - $107 >> 4 >>> 0) {
       $114 = HEAP32[$107 + ($103 << 4) >> 2] | 0;
       $116 = HEAP32[$107 + ($103 << 4) + 4 >> 2] | 0;
       $117 = $db + 4 | 0;
       $118 = $db + 8 | 0;
       $119 = $db + 12 | 0;
       $120 = $__v$i$i13 + 8 | 0;
       L43 : do if (($114 | 0) != ($116 | 0)) {
        $125 = $114;
        while (1) {
         $122 = HEAP32[$117 >> 2] | 0;
         if (($122 | 0) == (HEAP32[$118 >> 2] | 0)) {
          $133 = $122 - (HEAP32[$db >> 2] | 0) | 0;
          $134 = ($133 | 0) / 24 | 0;
          $135 = $134 + 1 | 0;
          if (($133 | 0) < -24) break;
          if ($134 >>> 0 < 1073741823) {
           $138 = $134 << 1;
           $$0$i$i$i15 = $138 >>> 0 < $135 >>> 0 ? $135 : $138;
          } else $$0$i$i$i15 = 2147483647;
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i15, $134, $119);
          $141 = HEAP32[$120 >> 2] | 0;
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141, $125);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($141 + 12 | 0, $125 + 12 | 0);
          HEAP32[$120 >> 2] = $141 + 24;
          __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);
          __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);
         } else {
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122, $125);
          __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($122 + 12 | 0, $125 + 12 | 0);
          HEAP32[$117 >> 2] = (HEAP32[$117 >> 2] | 0) + 24;
         }
         $125 = $125 + 24 | 0;
         if (($125 | 0) == ($116 | 0)) break L43;
        }
        __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       } while (0);
       $$0 = $t1$060$lcssa + 1 | 0;
       break;
      }
      $148 = $t1$060$lcssa + 1 | 0;
      $150 = $148 - $4 | 0;
      if ($150 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);
      if ($150 >>> 0 < 11) {
       HEAP8[$2 >> 0] = $150 << 1;
       $__p$0$ph$i$i = $2 + 1 | 0;
      } else {
       $157 = $150 + 16 & -16;
       $158 = _malloc($157) | 0;
       HEAP32[$2 + 8 >> 2] = $158;
       HEAP32[$2 >> 2] = $157 | 1;
       HEAP32[$2 + 4 >> 2] = $150;
       $__p$0$ph$i$i = $158;
      }
      if (($148 | 0) != ($first | 0)) {
       $$0$i$i58 = $first;
       $__p$0$i$i57 = $__p$0$ph$i$i;
       while (1) {
        HEAP8[$__p$0$i$i57 >> 0] = HEAP8[$$0$i$i58 >> 0] | 0;
        if (($$0$i$i58 | 0) == ($t1$060$lcssa | 0)) break; else {
         $$0$i$i58 = $$0$i$i58 + 1 | 0;
         $__p$0$i$i57 = $__p$0$i$i57 + 1 | 0;
        }
       }
      }
      HEAP8[$__p$0$ph$i$i + $150 >> 0] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($1, $2);
      $167 = $db + 4 | 0;
      $168 = HEAP32[$167 >> 2] | 0;
      $170 = HEAP32[$db + 8 >> 2] | 0;
      if ($168 >>> 0 < $170 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($168, $1);
       HEAP32[$167 >> 2] = (HEAP32[$167 >> 2] | 0) + 24;
      } else {
       $177 = HEAP32[$db >> 2] | 0;
       $178 = $168 - $177 | 0;
       $179 = ($178 | 0) / 24 | 0;
       $180 = $179 + 1 | 0;
       if (($178 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $184 = ($170 - $177 | 0) / 24 | 0;
       if ($184 >>> 0 < 1073741823) {
        $186 = $184 << 1;
        $$0$i$i$i = $186 >>> 0 < $180 >>> 0 ? $180 : $186;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i13, $$0$i$i$i, $179, $db + 12 | 0);
       $189 = $__v$i$i13 + 8 | 0;
       $190 = HEAP32[$189 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($190, $1);
       HEAP32[$189 >> 2] = $190 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i13);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i13);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
      HEAP8[$db + 62 >> 0] = 1;
      $$0 = $148;
     }
    } else $$0 = $first;
   }
  } else $$0 = $first;
 } else $$0 = $first; else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _get_matrix_code($data, $size, $code_out_p, $dir, $cf, $matrixCodeType, $errorCorrected) {
 $data = $data | 0;
 $size = $size | 0;
 $code_out_p = $code_out_p | 0;
 $dir = $dir | 0;
 $cf = $cf | 0;
 $matrixCodeType = $matrixCodeType | 0;
 $errorCorrected = $errorCorrected | 0;
 var $$ = 0, $$0 = 0, $$lcssa115 = 0, $$max$0 = 0, $$max$0$1 = 0, $$max$0$2 = 0, $1 = 0, $10 = 0, $100 = 0, $102 = 0, $103 = 0, $108 = 0, $109 = 0, $110 = 0, $120 = 0, $121 = 0, $122 = 0, $124 = 0, $125 = 0, $126 = 0, $130 = 0, $140 = 0, $144 = 0, $145 = 0, $146 = 0, $157 = 0, $158 = 0, $16 = 0, $163 = 0, $164 = 0, $165 = 0, $169 = 0, $182 = 0, $183 = 0, $184 = 0, $187 = 0, $193 = 0, $194 = 0, $197 = 0, $2 = 0, $206 = 0, $207 = 0, $211 = 0, $22 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $28 = 0, $31 = 0, $32 = 0, $36 = 0, $4 = 0, $70 = 0, $83 = 0, $85 = 0, $86 = 0, $96 = 0, $98 = 0, $code = 0, $contrastMin$0$lcssa = 0, $contrastMin$098 = 0, $contrastMin$1 = 0, $corner = 0, $dirCode = 0, $exitcond64 = 0, $i$2102 = 0, $i$2102$lcssa = 0, $i$399 = 0, $i$465 = 0, $i$576 = 0, $i$680 = 0, $i$794 = 0, $j$067 = 0, $j$171 = 0, $j$285 = 0, $j$389 = 0, $min$1 = 0, $min$1$1 = 0, $min$1$2 = 0, $or$cond734 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $dirCode = sp + 24 | 0;
 $corner = sp + 8 | 0;
 $code = sp;
 L1 : do if (($size + -3 | 0) >>> 0 > 5) {
  HEAP32[$code_out_p >> 2] = -1;
  HEAP32[$dir >> 2] = 0;
  HEAPF64[$cf >> 3] = -1.0;
  $$0 = -1;
 } else {
  HEAP32[$corner >> 2] = 0;
  $1 = $size + -1 | 0;
  $2 = Math_imul($1, $size) | 0;
  HEAP32[$corner + 4 >> 2] = $2;
  $4 = Math_imul($size, $size) | 0;
  HEAP32[$corner + 8 >> 2] = $4 + -1;
  HEAP32[$corner + 12 >> 2] = $1;
  $10 = HEAP8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0;
  $$max$0 = ($10 & 255) > 0 ? $10 : 0;
  $min$1 = ($10 & 255) < 255 ? $10 : -1;
  $16 = HEAP8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0;
  $$max$0$1 = ($16 & 255) > ($$max$0 & 255) ? $16 : $$max$0;
  $min$1$1 = ($16 & 255) < ($min$1 & 255) ? $16 : $min$1;
  $22 = HEAP8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0;
  $$max$0$2 = ($22 & 255) > ($$max$0$1 & 255) ? $22 : $$max$0$1;
  $min$1$2 = ($22 & 255) < ($min$1$1 & 255) ? $22 : $min$1$1;
  $28 = HEAP8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0;
  $31 = (($28 & 255) > ($$max$0$2 & 255) ? $28 : $$max$0$2) & 255;
  $32 = (($28 & 255) < ($min$1$2 & 255) ? $28 : $min$1$2) & 255;
  if (($31 - $32 | 0) < 30) {
   HEAP32[$code_out_p >> 2] = -1;
   HEAP32[$dir >> 2] = 0;
   HEAPF64[$cf >> 3] = -1.0;
   $$0 = -2;
   break;
  }
  $36 = ($31 + $32 | 0) >>> 1;
  HEAP8[$dirCode >> 0] = (HEAPU8[$data + (HEAP32[$corner >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;
  HEAP8[$dirCode + 1 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 4 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;
  HEAP8[$dirCode + 2 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 8 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;
  HEAP8[$dirCode + 3 >> 0] = (HEAPU8[$data + (HEAP32[$corner + 12 >> 2] | 0) >> 0] | 0) >>> 0 < $36 >>> 0 & 1;
  $i$2102 = 0;
  while (1) {
   $70 = $i$2102 + 1 | 0;
   if ((HEAP8[$dirCode + $i$2102 >> 0] | 0) == 1) if ((HEAP8[$dirCode + (($70 | 0) % 4 | 0) >> 0] | 0) == 1) if (!(HEAP8[$dirCode + (($i$2102 + 2 | 0) % 4 | 0) >> 0] | 0)) {
    $i$2102$lcssa = $i$2102;
    label = 10;
    break;
   }
   if (($70 | 0) < 4) $i$2102 = $70; else {
    $$lcssa115 = $70;
    label = 12;
    break;
   }
  }
  if ((label | 0) == 10) HEAP32[$dir >> 2] = $i$2102$lcssa; else if ((label | 0) == 12) if (($$lcssa115 | 0) == 4) {
   HEAP32[$code_out_p >> 2] = -1;
   HEAP32[$dir >> 2] = 0;
   HEAPF64[$cf >> 3] = -1.0;
   $$0 = -3;
   break;
  }
  if (!$4) $contrastMin$0$lcssa = 255; else {
   $contrastMin$098 = 255;
   $i$399 = 0;
   while (1) {
    $83 = $data + $i$399 | 0;
    $85 = HEAPU8[$83 >> 0] | 0;
    $86 = $85 - $36 | 0;
    $$ = ($86 | 0) < 0 ? 0 - $86 | 0 : $86;
    $contrastMin$1 = ($$ | 0) < ($contrastMin$098 | 0) ? $$ : $contrastMin$098;
    HEAP8[$83 >> 0] = $85 >>> 0 < $36 >>> 0 & 1;
    $i$399 = $i$399 + 1 | 0;
    if (($i$399 | 0) >= ($4 | 0)) {
     $contrastMin$0$lcssa = $contrastMin$1;
     break;
    } else $contrastMin$098 = $contrastMin$1;
   }
  }
  switch (HEAP32[$dir >> 2] | 0) {
  case 0:
   {
    if (($size | 0) > 0) {
     $exitcond64 = ($size | 0) == 0;
     $227 = 0;
     $228 = 0;
     $j$067 = 0;
     while (1) {
      $102 = ($j$067 | 0) == ($1 | 0);
      $103 = Math_imul($j$067, $size) | 0;
      if ($exitcond64) {
       $229 = $227;
       $230 = $228;
      } else {
       $108 = $227;
       $109 = $228;
       $i$465 = 0;
       while (1) {
        if (!($i$465 | $j$067)) {
         $231 = $108;
         $232 = $109;
        } else if ($102 & (($i$465 | 0) == 0 | ($i$465 | 0) == ($1 | 0))) {
         $231 = $108;
         $232 = $109;
        } else {
         $110 = _bitshift64Shl($108 | 0, $109 | 0, 1) | 0;
         $231 = (HEAP8[$data + ($i$465 + $103) >> 0] | 0) != 0 | $110;
         $232 = tempRet0;
        }
        $i$465 = $i$465 + 1 | 0;
        if (($i$465 | 0) == ($size | 0)) {
         $229 = $231;
         $230 = $232;
         break;
        } else {
         $108 = $231;
         $109 = $232;
        }
       }
      }
      $j$067 = $j$067 + 1 | 0;
      if (($j$067 | 0) >= ($size | 0)) {
       $182 = $229;
       $206 = $230;
       break;
      } else {
       $227 = $229;
       $228 = $230;
      }
     }
    } else {
     $182 = 0;
     $206 = 0;
    }
    break;
   }
  case 1:
   {
    if (($size | 0) > 0) {
     $100 = ($size | 0) > 0;
     $225 = 0;
     $226 = 0;
     $i$576 = 0;
     while (1) {
      $120 = ($i$576 | 0) == 0;
      $121 = ($i$576 | 0) == ($1 | 0);
      if ($100) {
       $124 = $225;
       $125 = $226;
       $j$171 = $1;
       while (1) {
        $122 = ($j$171 | 0) == ($1 | 0);
        if ($120 & $122) {
         $235 = $124;
         $236 = $125;
        } else if ($121 & ($122 | ($j$171 | 0) == 0)) {
         $235 = $124;
         $236 = $125;
        } else {
         $126 = _bitshift64Shl($124 | 0, $125 | 0, 1) | 0;
         $130 = $data + ((Math_imul($j$171, $size) | 0) + $i$576) | 0;
         $235 = (HEAP8[$130 >> 0] | 0) != 0 | $126;
         $236 = tempRet0;
        }
        if (($j$171 | 0) > 0) {
         $124 = $235;
         $125 = $236;
         $j$171 = $j$171 + -1 | 0;
        } else {
         $233 = $235;
         $234 = $236;
         break;
        }
       }
      } else {
       $233 = $225;
       $234 = $226;
      }
      $i$576 = $i$576 + 1 | 0;
      if (($i$576 | 0) >= ($size | 0)) {
       $182 = $233;
       $206 = $234;
       break;
      } else {
       $225 = $233;
       $226 = $234;
      }
     }
    } else {
     $182 = 0;
     $206 = 0;
    }
    break;
   }
  case 2:
   {
    if (($size | 0) > 0) {
     $98 = ($size | 0) > 0;
     $223 = 0;
     $224 = 0;
     $j$285 = $1;
     while (1) {
      $or$cond734 = ($j$285 | 0) == ($1 | 0) | ($j$285 | 0) == 0;
      $140 = Math_imul($j$285, $size) | 0;
      if ($98) {
       $144 = $223;
       $145 = $224;
       $i$680 = $1;
       while (1) {
        if ($or$cond734 & ($i$680 | 0) == ($1 | 0) | ($i$680 | $j$285 | 0) == 0) {
         $239 = $144;
         $240 = $145;
        } else {
         $146 = _bitshift64Shl($144 | 0, $145 | 0, 1) | 0;
         $239 = (HEAP8[$data + ($i$680 + $140) >> 0] | 0) != 0 | $146;
         $240 = tempRet0;
        }
        if (($i$680 | 0) > 0) {
         $144 = $239;
         $145 = $240;
         $i$680 = $i$680 + -1 | 0;
        } else {
         $237 = $239;
         $238 = $240;
         break;
        }
       }
      } else {
       $237 = $223;
       $238 = $224;
      }
      if (($j$285 | 0) > 0) {
       $223 = $237;
       $224 = $238;
       $j$285 = $j$285 + -1 | 0;
      } else {
       $182 = $237;
       $206 = $238;
       break;
      }
     }
    } else {
     $182 = 0;
     $206 = 0;
    }
    break;
   }
  case 3:
   {
    if (($size | 0) > 0) {
     $96 = ($size | 0) > 0;
     $221 = 0;
     $222 = 0;
     $i$794 = $1;
     while (1) {
      $157 = ($i$794 | 0) == ($1 | 0);
      $158 = ($i$794 | 0) == 0;
      if ($96) {
       $163 = $221;
       $164 = $222;
       $j$389 = 0;
       while (1) {
        if ($157 & ($j$389 | 0) == 0 | ($j$389 | $i$794 | 0) == 0 | $158 & ($j$389 | 0) == ($1 | 0)) {
         $243 = $163;
         $244 = $164;
        } else {
         $165 = _bitshift64Shl($163 | 0, $164 | 0, 1) | 0;
         $169 = $data + ((Math_imul($j$389, $size) | 0) + $i$794) | 0;
         $243 = (HEAP8[$169 >> 0] | 0) != 0 | $165;
         $244 = tempRet0;
        }
        $j$389 = $j$389 + 1 | 0;
        if (($j$389 | 0) >= ($size | 0)) {
         $241 = $243;
         $242 = $244;
         break;
        } else {
         $163 = $243;
         $164 = $244;
        }
       }
      } else {
       $241 = $221;
       $242 = $222;
      }
      if (($i$794 | 0) > 0) {
       $221 = $241;
       $222 = $242;
       $i$794 = $i$794 + -1 | 0;
      } else {
       $182 = $241;
       $206 = $242;
       break;
      }
     }
    } else {
     $182 = 0;
     $206 = 0;
    }
    break;
   }
  default:
   {
    $182 = 0;
    $206 = 0;
   }
  }
  HEAPF64[$cf >> 3] = ($contrastMin$0$lcssa | 0) > 30 ? 1.0 : +($contrastMin$0$lcssa | 0) / 30.0;
  switch ($matrixCodeType | 0) {
  case 259:
   {
    $183 = HEAP8[4551 + $182 >> 0] | 0;
    $184 = $183 << 24 >> 24;
    $187 = $code;
    HEAP32[$187 >> 2] = $184;
    HEAP32[$187 + 4 >> 2] = (($184 | 0) < 0) << 31 >> 31;
    if ($183 << 24 >> 24 < 0) {
     HEAP32[$code_out_p >> 2] = -1;
     HEAPF64[$cf >> 3] = -1.0;
     $$0 = -4;
     break L1;
    }
    break;
   }
  case 515:
   {
    $193 = HEAP8[4423 + $182 >> 0] | 0;
    $194 = $193 << 24 >> 24;
    $197 = $code;
    HEAP32[$197 >> 2] = $194;
    HEAP32[$197 + 4 >> 2] = (($194 | 0) < 0) << 31 >> 31;
    if ($errorCorrected) HEAP32[$errorCorrected >> 2] = HEAPU8[4487 + $182 >> 0];
    if ($193 << 24 >> 24 < 0) {
     HEAP32[$code_out_p >> 2] = -1;
     HEAPF64[$cf >> 3] = -1.0;
     $$0 = -4;
     break L1;
    }
    break;
   }
  case 772:
  case 1028:
   {
    $207 = _decode_bch($matrixCodeType, $182, $206, 0, $code) | 0;
    if (($207 | 0) < 0) {
     HEAP32[$code_out_p >> 2] = -1;
     HEAPF64[$cf >> 3] = -1.0;
     $$0 = -4;
     break L1;
    }
    if (($errorCorrected | 0) != 0 & ($207 | 0) > 0) HEAP32[$errorCorrected >> 2] = $207;
    break;
   }
  default:
   {
    $211 = $code;
    HEAP32[$211 >> 2] = $182;
    HEAP32[$211 + 4 >> 2] = $206;
   }
  }
  HEAP32[$code_out_p >> 2] = HEAP32[$code >> 2];
  $$0 = 0;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _decode_bch($matrixCodeType, $0, $1, $recd127, $out_p) {
 $matrixCodeType = $matrixCodeType | 0;
 $0 = $0 | 0;
 $1 = $1 | 0;
 $recd127 = $recd127 | 0;
 $out_p = $out_p | 0;
 var $$ = 0, $$0 = 0, $$lcssa24 = 0, $$lcssa76 = 0, $$lcssa77 = 0, $$pre$phi$lcssaZ2D = 0, $$pre$phiZ2D = 0, $$sink = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $11 = 0, $110 = 0, $114 = 0, $118 = 0, $122 = 0, $125 = 0, $133 = 0, $134 = 0, $143 = 0, $154 = 0, $155 = 0, $156 = 0, $159 = 0, $17 = 0, $175 = 0, $182 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $194 = 0, $195 = 0, $198 = 0, $20 = 0, $208 = 0, $209 = 0, $28 = 0, $3 = 0, $30 = 0, $41 = 0, $43 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $58 = 0, $6 = 0, $71 = 0, $73 = 0, $74 = 0, $76 = 0, $78 = 0, $79 = 0, $86 = 0, $alpha_to$0 = 0, $count$036 = 0, $count$1 = 0, $count$1$lcssa = 0, $d = 0, $elp = 0, $i$066 = 0, $i$1035 = 0, $i$1130 = 0, $i$1228 = 0, $i$159 = 0, $i$254 = 0, $i$347 = 0, $i$441 = 0, $i$543 = 0, $i$645 = 0, $i$750 = 0, $i$839 = 0, $i$937 = 0, $index_of$0 = 0, $j$058 = 0, $j$1 = 0, $j$232 = 0, $k$0 = 0, $k$1 = 0, $l = 0, $length$0 = 0, $loc = 0, $n$0 = 0, $q$0 = 0, $q$1 = 0, $q$2 = 0, $q$3 = 0, $q$4$lcssa = 0, $q$433 = 0, $q$5 = 0, $recd$0 = 0, $recd15 = 0, $reg = 0, $s = 0, $syn_error$0$ = 0, $syn_error$0$$lcssa = 0, $syn_error$060 = 0, $t$0 = 0, $t$1 = 0, $u$0 = 0, $u$1 = 0, $u_lu = 0, label = 0, sp = 0, $j$1$looptemp = 0, $u$0$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 2320 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $recd15 = sp + 2304 | 0;
 $elp = sp + 864 | 0;
 $d = sp + 784 | 0;
 $l = sp + 704 | 0;
 $u_lu = sp + 624 | 0;
 $s = sp + 548 | 0;
 $loc = sp + 40 | 0;
 $reg = sp;
 switch ($matrixCodeType | 0) {
 case 772:
  {
   $k$0 = 9;
   $t$0 = 1;
   label = 3;
   break;
  }
 case 1028:
  {
   $k$0 = 5;
   $t$0 = 2;
   label = 3;
   break;
  }
 case 2830:
  {
   $alpha_to$0 = 900;
   $index_of$0 = 1472;
   $k$1 = 64;
   $length$0 = 120;
   $n$0 = 127;
   $recd$0 = $recd127;
   $t$1 = 9;
   label = 6;
   break;
  }
 default:
  $$0 = -1;
 }
 if ((label | 0) == 3) {
  $3 = $0;
  $6 = $1;
  $i$066 = 0;
  while (1) {
   HEAP8[$recd15 + $i$066 >> 0] = $3 & 1;
   $3 = _bitshift64Lshr($3 | 0, $6 | 0, 1) | 0;
   $i$066 = $i$066 + 1 | 0;
   if (($i$066 | 0) == 13) break; else $6 = tempRet0;
  }
  $alpha_to$0 = 840;
  $index_of$0 = 1408;
  $k$1 = $k$0;
  $length$0 = 13;
  $n$0 = 15;
  $recd$0 = $recd15;
  $t$1 = $t$0;
  label = 6;
 }
 do if ((label | 0) == 6) {
  $10 = $t$1 << 1;
  $i$159 = 1;
  $syn_error$060 = 0;
  while (1) {
   $11 = $s + ($i$159 << 2) | 0;
   HEAP32[$11 >> 2] = 0;
   $20 = 0;
   $j$058 = 0;
   while (1) {
    if (!(HEAP8[$recd$0 + $j$058 >> 0] | 0)) $208 = $20; else {
     $17 = $alpha_to$0 + (((Math_imul($j$058, $i$159) | 0) % ($n$0 | 0) | 0) << 2) | 0;
     $19 = $20 ^ HEAP32[$17 >> 2];
     HEAP32[$11 >> 2] = $19;
     $208 = $19;
    }
    $j$058 = $j$058 + 1 | 0;
    if (($j$058 | 0) >= ($length$0 | 0)) {
     $$lcssa77 = $208;
     break;
    } else $20 = $208;
   }
   $syn_error$0$ = ($$lcssa77 | 0) == 0 ? $syn_error$060 : 1;
   HEAP32[$11 >> 2] = HEAP32[$index_of$0 + ($$lcssa77 << 2) >> 2];
   if (($i$159 | 0) < ($10 | 0)) {
    $i$159 = $i$159 + 1 | 0;
    $syn_error$060 = $syn_error$0$;
   } else {
    $syn_error$0$$lcssa = $syn_error$0$;
    break;
   }
  }
  $28 = ($syn_error$0$$lcssa | 0) != 0;
  if ($28) {
   HEAP32[$d >> 2] = 0;
   $30 = HEAP32[$s + 4 >> 2] | 0;
   HEAP32[$d + 4 >> 2] = $30;
   HEAP32[$elp >> 2] = 0;
   HEAP32[$elp + 72 >> 2] = 1;
   if (($10 | 0) > 1) {
    $i$254 = 1;
    do {
     HEAP32[$elp + ($i$254 << 2) >> 2] = -1;
     HEAP32[$elp + 72 + ($i$254 << 2) >> 2] = 0;
     $i$254 = $i$254 + 1 | 0;
    } while (($i$254 | 0) < ($10 | 0));
   }
   HEAP32[$l >> 2] = 0;
   HEAP32[$l + 4 >> 2] = 0;
   HEAP32[$u_lu >> 2] = -1;
   HEAP32[$u_lu + 4 >> 2] = 0;
   $43 = $30;
   $46 = 0;
   $u$0 = 0;
   while (1) {
    $u$0$looptemp = $u$0;
    $u$0 = $u$0 + 1 | 0;
    $41 = $d + ($u$0 << 2) | 0;
    if (($43 | 0) == -1) {
     $44 = $u$0$looptemp + 2 | 0;
     HEAP32[$l + ($44 << 2) >> 2] = $46;
     if (($46 | 0) < 0) {
      $$pre$phiZ2D = $44;
      $110 = $46;
     } else {
      $i$347 = 0;
      while (1) {
       $48 = $elp + ($u$0 * 72 | 0) + ($i$347 << 2) | 0;
       $49 = HEAP32[$48 >> 2] | 0;
       HEAP32[$elp + ($44 * 72 | 0) + ($i$347 << 2) >> 2] = $49;
       HEAP32[$48 >> 2] = HEAP32[$index_of$0 + ($49 << 2) >> 2];
       if (($i$347 | 0) < ($46 | 0)) $i$347 = $i$347 + 1 | 0; else {
        $$pre$phiZ2D = $44;
        $110 = $46;
        break;
       }
      }
     }
    } else {
     $q$0 = $u$0$looptemp;
     while (1) {
      $58 = ($q$0 | 0) > 0;
      if ($58 & (HEAP32[$d + ($q$0 << 2) >> 2] | 0) == -1) $q$0 = $q$0 + -1 | 0; else break;
     }
     if ($58) {
      $j$1 = $q$0;
      $q$1 = $q$0;
      while (1) {
       $j$1$looptemp = $j$1;
       $j$1 = $j$1 + -1 | 0;
       if ((HEAP32[$d + ($j$1 << 2) >> 2] | 0) == -1) $q$2 = $q$1; else $q$2 = (HEAP32[$u_lu + ($q$1 << 2) >> 2] | 0) < (HEAP32[$u_lu + ($j$1 << 2) >> 2] | 0) ? $j$1 : $q$1;
       if (($j$1$looptemp | 0) <= 1) {
        $q$3 = $q$2;
        break;
       } else $q$1 = $q$2;
      }
     } else $q$3 = $q$0;
     $71 = $l + ($q$3 << 2) | 0;
     $73 = $u$0 - $q$3 | 0;
     $74 = $73 + (HEAP32[$71 >> 2] | 0) | 0;
     $76 = $u$0$looptemp + 2 | 0;
     $$ = ($46 | 0) > ($74 | 0) ? $46 : $74;
     HEAP32[$l + ($76 << 2) >> 2] = $$;
     $i$441 = 0;
     do {
      HEAP32[$elp + ($76 * 72 | 0) + ($i$441 << 2) >> 2] = 0;
      $i$441 = $i$441 + 1 | 0;
     } while (($i$441 | 0) < ($10 | 0));
     $78 = HEAP32[$71 >> 2] | 0;
     $79 = $d + ($q$3 << 2) | 0;
     if (($78 | 0) >= 0) {
      $i$543 = 0;
      while (1) {
       $86 = HEAP32[$elp + ($q$3 * 72 | 0) + ($i$543 << 2) >> 2] | 0;
       if (($86 | 0) != -1) HEAP32[$elp + ($76 * 72 | 0) + ($73 + $i$543 << 2) >> 2] = HEAP32[$alpha_to$0 + ((($86 + $n$0 + (HEAP32[$41 >> 2] | 0) - (HEAP32[$79 >> 2] | 0) | 0) % ($n$0 | 0) | 0) << 2) >> 2];
       if (($i$543 | 0) < ($78 | 0)) $i$543 = $i$543 + 1 | 0; else break;
      }
     }
     if (($46 | 0) < 0) {
      $$pre$phiZ2D = $76;
      $110 = $$;
     } else {
      $i$645 = 0;
      while (1) {
       $100 = $elp + ($u$0 * 72 | 0) + ($i$645 << 2) | 0;
       $101 = HEAP32[$100 >> 2] | 0;
       $102 = $elp + ($76 * 72 | 0) + ($i$645 << 2) | 0;
       HEAP32[$102 >> 2] = HEAP32[$102 >> 2] ^ $101;
       HEAP32[$100 >> 2] = HEAP32[$index_of$0 + ($101 << 2) >> 2];
       if (($i$645 | 0) < ($46 | 0)) $i$645 = $i$645 + 1 | 0; else {
        $$pre$phiZ2D = $76;
        $110 = $$;
        break;
       }
      }
     }
    }
    HEAP32[$u_lu + ($$pre$phiZ2D << 2) >> 2] = $u$0 - $110;
    if (($u$0 | 0) >= ($10 | 0)) {
     $$lcssa76 = $110;
     $$pre$phi$lcssaZ2D = $$pre$phiZ2D;
     break;
    }
    $114 = HEAP32[$s + ($$pre$phiZ2D << 2) >> 2] | 0;
    if (($114 | 0) == -1) $$sink = 0; else $$sink = HEAP32[$alpha_to$0 + ($114 << 2) >> 2] | 0;
    $118 = $d + ($$pre$phiZ2D << 2) | 0;
    HEAP32[$118 >> 2] = $$sink;
    if (($110 | 0) < 1) $$lcssa24 = $$sink; else {
     $134 = $$sink;
     $i$750 = 1;
     while (1) {
      $122 = HEAP32[$s + ($$pre$phiZ2D - $i$750 << 2) >> 2] | 0;
      if (($122 | 0) == -1) $209 = $134; else {
       $125 = HEAP32[$elp + ($$pre$phiZ2D * 72 | 0) + ($i$750 << 2) >> 2] | 0;
       if (!$125) $209 = $134; else {
        $133 = $134 ^ HEAP32[$alpha_to$0 + ((((HEAP32[$index_of$0 + ($125 << 2) >> 2] | 0) + $122 | 0) % ($n$0 | 0) | 0) << 2) >> 2];
        HEAP32[$118 >> 2] = $133;
        $209 = $133;
       }
      }
      if (($i$750 | 0) < ($110 | 0)) {
       $134 = $209;
       $i$750 = $i$750 + 1 | 0;
      } else {
       $$lcssa24 = $209;
       break;
      }
     }
    }
    $43 = HEAP32[$index_of$0 + ($$lcssa24 << 2) >> 2] | 0;
    HEAP32[$118 >> 2] = $43;
    if (($110 | 0) > ($t$1 | 0)) {
     $$lcssa76 = $110;
     $$pre$phi$lcssaZ2D = $$pre$phiZ2D;
     break;
    } else $46 = $110;
   }
   if (($$lcssa76 | 0) > ($t$1 | 0)) {
    $$0 = -1;
    break;
   }
   if (($$lcssa76 | 0) >= 0) {
    $i$839 = 0;
    while (1) {
     $143 = $elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$839 << 2) | 0;
     HEAP32[$143 >> 2] = HEAP32[$index_of$0 + (HEAP32[$143 >> 2] << 2) >> 2];
     if (($i$839 | 0) < ($$lcssa76 | 0)) $i$839 = $i$839 + 1 | 0; else break;
    }
   }
   if (($$lcssa76 | 0) >= 1) {
    $i$937 = 1;
    while (1) {
     HEAP32[$reg + ($i$937 << 2) >> 2] = HEAP32[$elp + ($$pre$phi$lcssaZ2D * 72 | 0) + ($i$937 << 2) >> 2];
     if (($i$937 | 0) < ($$lcssa76 | 0)) $i$937 = $i$937 + 1 | 0; else break;
    }
   }
   $154 = ($$lcssa76 | 0) < 1;
   $count$036 = 0;
   $i$1035 = 1;
   while (1) {
    if ($154) $q$4$lcssa = 1; else {
     $j$232 = 1;
     $q$433 = 1;
     while (1) {
      $155 = $reg + ($j$232 << 2) | 0;
      $156 = HEAP32[$155 >> 2] | 0;
      if (($156 | 0) == -1) $q$5 = $q$433; else {
       $159 = ($156 + $j$232 | 0) % ($n$0 | 0) | 0;
       HEAP32[$155 >> 2] = $159;
       $q$5 = HEAP32[$alpha_to$0 + ($159 << 2) >> 2] ^ $q$433;
      }
      if (($j$232 | 0) < ($$lcssa76 | 0)) {
       $j$232 = $j$232 + 1 | 0;
       $q$433 = $q$5;
      } else {
       $q$4$lcssa = $q$5;
       break;
      }
     }
    }
    if (!$q$4$lcssa) {
     HEAP32[$loc + ($count$036 << 2) >> 2] = $n$0 - $i$1035;
     $count$1 = $count$036 + 1 | 0;
    } else $count$1 = $count$036;
    $i$1035 = $i$1035 + 1 | 0;
    if (($n$0 | 0) < ($i$1035 | 0)) {
     $count$1$lcssa = $count$1;
     break;
    } else $count$036 = $count$1;
   }
   if (($count$1$lcssa | 0) != ($$lcssa76 | 0)) {
    $$0 = -1;
    break;
   }
   if (($$lcssa76 | 0) > 0) {
    $i$1130 = 0;
    do {
     $175 = $recd$0 + (HEAP32[$loc + ($i$1130 << 2) >> 2] | 0) | 0;
     HEAP8[$175 >> 0] = HEAPU8[$175 >> 0] ^ 1;
     $i$1130 = $i$1130 + 1 | 0;
    } while (($i$1130 | 0) < ($$lcssa76 | 0));
    $u$1 = $$pre$phi$lcssaZ2D;
   } else $u$1 = $$pre$phi$lcssaZ2D;
  } else $u$1 = 0;
  $182 = $out_p;
  HEAP32[$182 >> 2] = 0;
  HEAP32[$182 + 4 >> 2] = 0;
  $190 = 1;
  $191 = 0;
  $194 = 0;
  $195 = 0;
  $i$1228 = $length$0 - $k$1 | 0;
  while (1) {
   $192 = ___muldi3(HEAPU8[$recd$0 + $i$1228 >> 0] | 0, 0, $190 | 0, $191 | 0) | 0;
   $194 = _i64Add($192 | 0, tempRet0 | 0, $194 | 0, $195 | 0) | 0;
   $195 = tempRet0;
   $198 = $out_p;
   HEAP32[$198 >> 2] = $194;
   HEAP32[$198 + 4 >> 2] = $195;
   $190 = _bitshift64Shl($190 | 0, $191 | 0, 1) | 0;
   $i$1228 = $i$1228 + 1 | 0;
   if (($i$1228 | 0) >= ($length$0 | 0)) break; else $191 = tempRet0;
  }
  if ($28) $$0 = HEAP32[$l + ($u$1 << 2) >> 2] | 0; else $$0 = 0;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0$i$i$i = 0, $$0$i$i$i11 = 0, $$0$i$i$i6 = 0, $$02 = 0, $0 = 0, $1 = 0, $103 = 0, $105 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $119 = 0, $122 = 0, $125 = 0, $126 = 0, $132 = 0, $134 = 0, $138 = 0, $147 = 0, $148 = 0, $15 = 0, $151 = 0, $152 = 0, $155 = 0, $157 = 0, $16 = 0, $160 = 0, $161 = 0, $163 = 0, $17 = 0, $170 = 0, $172 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $186 = 0, $189 = 0, $192 = 0, $193 = 0, $199 = 0, $2 = 0, $201 = 0, $22 = 0, $27 = 0, $3 = 0, $31 = 0, $32 = 0, $34 = 0, $4 = 0, $41 = 0, $43 = 0, $5 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $57 = 0, $60 = 0, $63 = 0, $64 = 0, $70 = 0, $72 = 0, $77 = 0, $78 = 0, $79 = 0, $83 = 0, $87 = 0, $89 = 0, $9 = 0, $93 = 0, $94 = 0, $96 = 0, $__v$i$i10 = 0, $k1$015 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i10 = sp + 72 | 0;
 $0 = sp + 56 | 0;
 $1 = sp + 48 | 0;
 $2 = sp + 32 | 0;
 $3 = sp + 24 | 0;
 $4 = sp + 8 | 0;
 $5 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else switch (HEAP8[$first >> 0] | 0) {
 case 84:
  {
   $9 = $db + 4 | 0;
   $15 = ((HEAP32[$9 >> 2] | 0) - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
   $16 = __ZN10__cxxabiv112_GLOBAL__N_120parse_template_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   $17 = HEAP32[$9 >> 2] | 0;
   $22 = ($17 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0;
   if (!(($16 | 0) != ($first | 0) & ($22 | 0) == ($15 + 1 | 0))) {
    if (($22 | 0) == ($15 | 0)) {
     $$02 = $first;
     break L1;
    } else {
     $77 = $17;
     $k1$015 = $22;
    }
    while (1) {
     $79 = $77;
     $77 = $77 + -24 | 0;
     do {
      $78 = $79 + -24 | 0;
      HEAP32[$9 >> 2] = $78;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($78);
      $79 = HEAP32[$9 >> 2] | 0;
     } while (($79 | 0) != ($77 | 0));
     $k1$015 = $k1$015 + -1 | 0;
     if (($k1$015 | 0) == ($15 | 0)) {
      $$02 = $first;
      break L1;
     }
    }
   }
   $27 = $db + 16 | 0;
   HEAP32[$1 >> 2] = HEAP32[$db + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($0, $17 + -24 | 0, $1);
   $31 = $db + 20 | 0;
   $32 = HEAP32[$31 >> 2] | 0;
   $34 = HEAP32[$db + 24 >> 2] | 0;
   if ($32 >>> 0 < $34 >>> 0) {
    HEAP32[$32 + 12 >> 2] = HEAP32[$0 + 12 >> 2];
    HEAP32[$32 >> 2] = HEAP32[$0 >> 2];
    $41 = $0 + 4 | 0;
    HEAP32[$32 + 4 >> 2] = HEAP32[$41 >> 2];
    $43 = $0 + 8 | 0;
    HEAP32[$32 + 8 >> 2] = HEAP32[$43 >> 2];
    HEAP32[$43 >> 2] = 0;
    HEAP32[$41 >> 2] = 0;
    HEAP32[$0 >> 2] = 0;
    HEAP32[$31 >> 2] = (HEAP32[$31 >> 2] | 0) + 16;
   } else {
    $51 = HEAP32[$27 >> 2] | 0;
    $52 = $32 - $51 | 0;
    $53 = $52 >> 4;
    $54 = $53 + 1 | 0;
    if (($52 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($27);
    $57 = $34 - $51 | 0;
    if ($57 >> 4 >>> 0 < 1073741823) {
     $60 = $57 >> 3;
     $$0$i$i$i = $60 >>> 0 < $54 >>> 0 ? $54 : $60;
    } else $$0$i$i$i = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i, $53, $db + 28 | 0);
    $63 = $__v$i$i10 + 8 | 0;
    $64 = HEAP32[$63 >> 2] | 0;
    HEAP32[$64 + 12 >> 2] = HEAP32[$0 + 12 >> 2];
    HEAP32[$64 >> 2] = HEAP32[$0 >> 2];
    $70 = $0 + 4 | 0;
    HEAP32[$64 + 4 >> 2] = HEAP32[$70 >> 2];
    $72 = $0 + 8 | 0;
    HEAP32[$64 + 8 >> 2] = HEAP32[$72 >> 2];
    HEAP32[$72 >> 2] = 0;
    HEAP32[$70 >> 2] = 0;
    HEAP32[$0 >> 2] = 0;
    HEAP32[$63 >> 2] = $64 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($27, $__v$i$i10);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($0);
   $$02 = $16;
   break L1;
   break;
  }
 case 68:
  {
   $83 = __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   if (($83 | 0) == ($first | 0)) {
    $$02 = $first;
    break L1;
   }
   $87 = HEAP32[$db + 4 >> 2] | 0;
   if ((HEAP32[$db >> 2] | 0) == ($87 | 0)) {
    $$02 = $first;
    break L1;
   }
   $89 = $db + 16 | 0;
   HEAP32[$3 >> 2] = HEAP32[$db + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($2, $87 + -24 | 0, $3);
   $93 = $db + 20 | 0;
   $94 = HEAP32[$93 >> 2] | 0;
   $96 = HEAP32[$db + 24 >> 2] | 0;
   if ($94 >>> 0 < $96 >>> 0) {
    HEAP32[$94 + 12 >> 2] = HEAP32[$2 + 12 >> 2];
    HEAP32[$94 >> 2] = HEAP32[$2 >> 2];
    $103 = $2 + 4 | 0;
    HEAP32[$94 + 4 >> 2] = HEAP32[$103 >> 2];
    $105 = $2 + 8 | 0;
    HEAP32[$94 + 8 >> 2] = HEAP32[$105 >> 2];
    HEAP32[$105 >> 2] = 0;
    HEAP32[$103 >> 2] = 0;
    HEAP32[$2 >> 2] = 0;
    HEAP32[$93 >> 2] = (HEAP32[$93 >> 2] | 0) + 16;
   } else {
    $113 = HEAP32[$89 >> 2] | 0;
    $114 = $94 - $113 | 0;
    $115 = $114 >> 4;
    $116 = $115 + 1 | 0;
    if (($114 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($89);
    $119 = $96 - $113 | 0;
    if ($119 >> 4 >>> 0 < 1073741823) {
     $122 = $119 >> 3;
     $$0$i$i$i6 = $122 >>> 0 < $116 >>> 0 ? $116 : $122;
    } else $$0$i$i$i6 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i6, $115, $db + 28 | 0);
    $125 = $__v$i$i10 + 8 | 0;
    $126 = HEAP32[$125 >> 2] | 0;
    HEAP32[$126 + 12 >> 2] = HEAP32[$2 + 12 >> 2];
    HEAP32[$126 >> 2] = HEAP32[$2 >> 2];
    $132 = $2 + 4 | 0;
    HEAP32[$126 + 4 >> 2] = HEAP32[$132 >> 2];
    $134 = $2 + 8 | 0;
    HEAP32[$126 + 8 >> 2] = HEAP32[$134 >> 2];
    HEAP32[$134 >> 2] = 0;
    HEAP32[$132 >> 2] = 0;
    HEAP32[$2 >> 2] = 0;
    HEAP32[$125 >> 2] = $126 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($89, $__v$i$i10);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($2);
   $$02 = $83;
   break L1;
   break;
  }
 case 83:
  {
   $138 = __ZN10__cxxabiv112_GLOBAL__N_118parse_substitutionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   if (($138 | 0) != ($first | 0)) {
    $$02 = $138;
    break L1;
   }
   if (($last - $first | 0) <= 2) {
    $$02 = $first;
    break L1;
   }
   if ((HEAP8[$first + 1 >> 0] | 0) != 116) {
    $$02 = $first;
    break L1;
   }
   $147 = $first + 2 | 0;
   $148 = __ZN10__cxxabiv112_GLOBAL__N_122parse_unqualified_nameINS0_2DbEEEPKcS4_S4_RT_($147, $last, $db) | 0;
   if (($148 | 0) == ($147 | 0)) {
    $$02 = $first;
    break L1;
   }
   $151 = $db + 4 | 0;
   $152 = HEAP32[$151 >> 2] | 0;
   if ((HEAP32[$db >> 2] | 0) == ($152 | 0)) {
    $$02 = $first;
    break L1;
   }
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($152 + -24 | 0, 0, 12922) | 0;
   $155 = $db + 16 | 0;
   $157 = (HEAP32[$151 >> 2] | 0) + -24 | 0;
   HEAP32[$5 >> 2] = HEAP32[$db + 12 >> 2];
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($4, $157, $5);
   $160 = $db + 20 | 0;
   $161 = HEAP32[$160 >> 2] | 0;
   $163 = HEAP32[$db + 24 >> 2] | 0;
   if ($161 >>> 0 < $163 >>> 0) {
    HEAP32[$161 + 12 >> 2] = HEAP32[$4 + 12 >> 2];
    HEAP32[$161 >> 2] = HEAP32[$4 >> 2];
    $170 = $4 + 4 | 0;
    HEAP32[$161 + 4 >> 2] = HEAP32[$170 >> 2];
    $172 = $4 + 8 | 0;
    HEAP32[$161 + 8 >> 2] = HEAP32[$172 >> 2];
    HEAP32[$172 >> 2] = 0;
    HEAP32[$170 >> 2] = 0;
    HEAP32[$4 >> 2] = 0;
    HEAP32[$160 >> 2] = (HEAP32[$160 >> 2] | 0) + 16;
   } else {
    $180 = HEAP32[$155 >> 2] | 0;
    $181 = $161 - $180 | 0;
    $182 = $181 >> 4;
    $183 = $182 + 1 | 0;
    if (($181 | 0) < -16) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($155);
    $186 = $163 - $180 | 0;
    if ($186 >> 4 >>> 0 < 1073741823) {
     $189 = $186 >> 3;
     $$0$i$i$i11 = $189 >>> 0 < $183 >>> 0 ? $183 : $189;
    } else $$0$i$i$i11 = 2147483647;
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($__v$i$i10, $$0$i$i$i11, $182, $db + 28 | 0);
    $192 = $__v$i$i10 + 8 | 0;
    $193 = HEAP32[$192 >> 2] | 0;
    HEAP32[$193 + 12 >> 2] = HEAP32[$4 + 12 >> 2];
    HEAP32[$193 >> 2] = HEAP32[$4 >> 2];
    $199 = $4 + 4 | 0;
    HEAP32[$193 + 4 >> 2] = HEAP32[$199 >> 2];
    $201 = $4 + 8 | 0;
    HEAP32[$193 + 8 >> 2] = HEAP32[$201 >> 2];
    HEAP32[$201 >> 2] = 0;
    HEAP32[$199 >> 2] = 0;
    HEAP32[$4 >> 2] = 0;
    HEAP32[$192 >> 2] = $193 + 16;
    __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($155, $__v$i$i10);
    __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($__v$i$i10);
   }
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($4);
   $$02 = $148;
   break L1;
   break;
  }
 default:
  {
   $$02 = $first;
   break L1;
  }
 } while (0);
 STACKTOP = sp;
 return $$02 | 0;
}

function _arDetectMarker2($xsize, $ysize, $labelInfo, $imageProcMode, $areaMax, $areaMin, $squareFitThresh, $markerInfo2, $marker2_num) {
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $labelInfo = $labelInfo | 0;
 $imageProcMode = $imageProcMode | 0;
 $areaMax = $areaMax | 0;
 $areaMin = $areaMin | 0;
 $squareFitThresh = +$squareFitThresh;
 $markerInfo2 = $markerInfo2 | 0;
 $marker2_num = $marker2_num | 0;
 var $$0 = 0, $$01 = 0, $$02 = 0, $$03 = 0, $$lcssa = 0, $$lcssa15 = 0, $$lcssa16 = 0, $$lcssa17 = 0, $$ph = 0, $$pre10 = 0, $$pre9 = 0, $0 = 0, $115 = 0, $12 = 0, $120 = 0, $129 = 0, $13 = 0, $130 = 0, $132 = 0, $133 = 0.0, $136 = 0.0, $141 = 0.0, $143 = 0.0, $144 = 0, $145 = 0, $146 = 0, $16 = 0, $160 = 0, $164 = 0, $167 = 0, $171 = 0, $174 = 0, $177 = 0, $180 = 0, $183 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $42 = 0, $46 = 0, $47 = 0, $5 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0.0, $6 = 0, $66 = 0, $68 = 0, $7 = 0, $74 = 0, $8 = 0, $90 = 0, $dmax$0$i38 = 0, $i$0$i39 = 0, $i$0$v1$0$i = 0, $i$044 = 0, $i$134 = 0, $i$227 = 0, $i$321 = 0, $j$030 = 0, $j$1 = 0, $j$1$in24 = 0, $j$1$in24$phi = 0, $j$123 = 0, $j$125 = 0, $j$218 = 0, $pm$019 = 0, $v1$0$i$lcssa = 0, $v1$0$i37 = 0, $vertex$sroa$12$0$i = 0, $vertex$sroa$4$0$i = 0, $vertex$sroa$8$0$i = 0, $wv1$i = 0, $wv2$i = 0, $wvnum1$i = 0, $wvnum2$i = 0, label = 0, sp = 0, $i$134$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $wv1$i = sp + 56 | 0;
 $wvnum1$i = sp + 48 | 0;
 $wv2$i = sp + 8 | 0;
 $wvnum2$i = sp;
 $0 = ($imageProcMode | 0) == 1;
 if ($0) {
  $$0 = ($xsize | 0) / 2 | 0;
  $$01 = ($ysize | 0) / 2 | 0;
  $$02 = ($areaMax | 0) / 4 | 0;
  $$03 = ($areaMin | 0) / 4 | 0;
 } else {
  $$0 = $xsize;
  $$01 = $ysize;
  $$02 = $areaMax;
  $$03 = $areaMin;
 }
 HEAP32[$marker2_num >> 2] = 0;
 $5 = $labelInfo + 8 | 0;
 $6 = $$0 + -2 | 0;
 $7 = $$01 + -2 | 0;
 $8 = $labelInfo + 1179664 | 0;
 L4 : do if ((HEAP32[$5 >> 2] | 0) > 0) {
  $i$044 = 0;
  while (1) {
   $12 = $labelInfo + 12 + ($i$044 << 2) | 0;
   $13 = HEAP32[$12 >> 2] | 0;
   L7 : do if (!(($13 | 0) < ($$03 | 0) | ($13 | 0) > ($$02 | 0))) {
    $16 = $labelInfo + 131084 + ($i$044 << 4) | 0;
    if ((HEAP32[$16 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 4 >> 2] | 0) != ($6 | 0)) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 8 >> 2] | 0) != 1) if ((HEAP32[$labelInfo + 131084 + ($i$044 << 4) + 12 >> 2] | 0) != ($7 | 0)) if ((_arGetContour(HEAP32[$labelInfo >> 2] | 0, $$0, 0, $8, $i$044 + 1 | 0, $16, $markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) | 0) | 0) >= 0) {
     $34 = HEAP32[$12 >> 2] | 0;
     $35 = HEAP32[$marker2_num >> 2] | 0;
     $36 = $markerInfo2 + ($35 * 80048 | 0) + 28 | 0;
     $37 = HEAP32[$36 >> 2] | 0;
     $38 = $markerInfo2 + ($35 * 80048 | 0) + 40028 | 0;
     $39 = HEAP32[$38 >> 2] | 0;
     $40 = $markerInfo2 + ($35 * 80048 | 0) + 24 | 0;
     $42 = (HEAP32[$40 >> 2] | 0) + -1 | 0;
     if (($42 | 0) > 1) {
      $dmax$0$i38 = 0;
      $i$0$i39 = 1;
      $v1$0$i37 = 0;
      while (1) {
       $46 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 28 + ($i$0$i39 << 2) >> 2] | 0) - $37 | 0;
       $47 = Math_imul($46, $46) | 0;
       $50 = (HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 40028 + ($i$0$i39 << 2) >> 2] | 0) - $39 | 0;
       $52 = (Math_imul($50, $50) | 0) + $47 | 0;
       $53 = ($52 | 0) > ($dmax$0$i38 | 0);
       $i$0$v1$0$i = $53 ? $i$0$i39 : $v1$0$i37;
       $i$0$i39 = $i$0$i39 + 1 | 0;
       if (($i$0$i39 | 0) >= ($42 | 0)) {
        $v1$0$i$lcssa = $i$0$v1$0$i;
        break;
       } else {
        $dmax$0$i38 = $53 ? $52 : $dmax$0$i38;
        $v1$0$i37 = $i$0$v1$0$i;
       }
      }
     } else $v1$0$i$lcssa = 0;
     $59 = +($34 | 0) / .75 * .01 * $squareFitThresh;
     HEAP32[$wvnum1$i >> 2] = 0;
     HEAP32[$wvnum2$i >> 2] = 0;
     L18 : do if ((_get_vertex($36, $38, 0, $v1$0$i$lcssa, $59, $wv1$i, $wvnum1$i) | 0) >= 0) if ((_get_vertex($36, $38, $v1$0$i$lcssa, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) >= 0) {
      $66 = HEAP32[$wvnum1$i >> 2] | 0;
      $68 = HEAP32[$wvnum2$i >> 2] | 0;
      do if (($66 | 0) == 1 & ($68 | 0) == 1) {
       $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0;
       $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0;
       $vertex$sroa$8$0$i = $v1$0$i$lcssa;
      } else {
       if (($66 | 0) > 1 & ($68 | 0) == 0) {
        $74 = ($v1$0$i$lcssa | 0) / 2 | 0;
        HEAP32[$wvnum2$i >> 2] = 0;
        HEAP32[$wvnum1$i >> 2] = 0;
        if ((_get_vertex($36, $38, 0, $74, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18;
        if ((_get_vertex($36, $38, $74, $v1$0$i$lcssa, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18;
        if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18;
        $vertex$sroa$12$0$i = $v1$0$i$lcssa;
        $vertex$sroa$4$0$i = HEAP32[$wv1$i >> 2] | 0;
        $vertex$sroa$8$0$i = HEAP32[$wv2$i >> 2] | 0;
        break;
       }
       if (!(($66 | 0) == 0 & ($68 | 0) > 1)) break L18;
       $90 = ($v1$0$i$lcssa + -1 + (HEAP32[$40 >> 2] | 0) | 0) / 2 | 0;
       HEAP32[$wvnum2$i >> 2] = 0;
       HEAP32[$wvnum1$i >> 2] = 0;
       if ((_get_vertex($36, $38, $v1$0$i$lcssa, $90, $59, $wv1$i, $wvnum1$i) | 0) < 0) break L18;
       if ((_get_vertex($36, $38, $90, (HEAP32[$40 >> 2] | 0) + -1 | 0, $59, $wv2$i, $wvnum2$i) | 0) < 0) break L18;
       if (!((HEAP32[$wvnum1$i >> 2] | 0) == 1 & (HEAP32[$wvnum2$i >> 2] | 0) == 1)) break L18;
       $vertex$sroa$12$0$i = HEAP32[$wv2$i >> 2] | 0;
       $vertex$sroa$4$0$i = $v1$0$i$lcssa;
       $vertex$sroa$8$0$i = HEAP32[$wv1$i >> 2] | 0;
      } while (0);
      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80028 >> 2] = 0;
      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80032 >> 2] = $vertex$sroa$4$0$i;
      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80036 >> 2] = $vertex$sroa$8$0$i;
      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80040 >> 2] = $vertex$sroa$12$0$i;
      HEAP32[$markerInfo2 + ($35 * 80048 | 0) + 80044 >> 2] = (HEAP32[$40 >> 2] | 0) + -1;
      HEAP32[$markerInfo2 + ((HEAP32[$marker2_num >> 2] | 0) * 80048 | 0) >> 2] = HEAP32[$12 >> 2];
      $115 = HEAP32[$marker2_num >> 2] | 0;
      HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 8 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) >> 3];
      HEAPF64[$markerInfo2 + ($115 * 80048 | 0) + 16 >> 3] = +HEAPF64[$labelInfo + 655376 + ($i$044 << 4) + 8 >> 3];
      $120 = $115 + 1 | 0;
      HEAP32[$marker2_num >> 2] = $120;
      if (($120 | 0) == 60) {
       $$ph = 60;
       break L4;
      } else break L7;
     } while (0);
    }
   } while (0);
   $i$044 = $i$044 + 1 | 0;
   if (($i$044 | 0) >= (HEAP32[$5 >> 2] | 0)) {
    label = 4;
    break;
   }
  }
 } else label = 4; while (0);
 if ((label | 0) == 4) $$ph = HEAP32[$marker2_num >> 2] | 0;
 if (($$ph | 0) > 0) {
  $132 = $$ph;
  $i$134 = 0;
  while (1) {
   $i$134$looptemp = $i$134;
   $i$134 = $i$134 + 1 | 0;
   $129 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) + 16 | 0;
   $130 = $markerInfo2 + ($i$134$looptemp * 80048 | 0) | 0;
   if (($i$134 | 0) < ($132 | 0)) {
    $133 = +HEAPF64[$markerInfo2 + ($i$134$looptemp * 80048 | 0) + 8 >> 3];
    $j$030 = $i$134;
    do {
     $136 = $133 - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 8 >> 3];
     $141 = +HEAPF64[$129 >> 3] - +HEAPF64[$markerInfo2 + ($j$030 * 80048 | 0) + 16 >> 3];
     $143 = $136 * $136 + $141 * $141;
     $144 = HEAP32[$130 >> 2] | 0;
     $145 = $markerInfo2 + ($j$030 * 80048 | 0) | 0;
     $146 = HEAP32[$145 >> 2] | 0;
     if (($144 | 0) > ($146 | 0)) {
      if ($143 < +(($144 | 0) / 4 | 0 | 0)) HEAP32[$145 >> 2] = 0;
     } else if ($143 < +(($146 | 0) / 4 | 0 | 0)) HEAP32[$130 >> 2] = 0;
     $j$030 = $j$030 + 1 | 0;
     $$pre10 = HEAP32[$marker2_num >> 2] | 0;
    } while (($j$030 | 0) < ($$pre10 | 0));
    $$lcssa16 = $$pre10;
   } else $$lcssa16 = $132;
   if (($i$134 | 0) >= ($$lcssa16 | 0)) {
    $$lcssa17 = $$lcssa16;
    break;
   } else $132 = $$lcssa16;
  }
 } else $$lcssa17 = $$ph;
 if (($$lcssa17 | 0) > 0) {
  $160 = $$lcssa17;
  $i$227 = 0;
  while (1) {
   if (!(HEAP32[$markerInfo2 + ($i$227 * 80048 | 0) >> 2] | 0)) {
    $j$123 = $i$227 + 1 | 0;
    if (($j$123 | 0) < ($160 | 0)) {
     $j$1$in24 = $i$227;
     $j$125 = $j$123;
     while (1) {
      _memcpy($markerInfo2 + ($j$1$in24 * 80048 | 0) | 0, $markerInfo2 + ($j$125 * 80048 | 0) | 0, 80048) | 0;
      $$pre9 = HEAP32[$marker2_num >> 2] | 0;
      $j$1 = $j$125 + 1 | 0;
      if (($j$1 | 0) < ($$pre9 | 0)) {
       $j$1$in24$phi = $j$125;
       $j$125 = $j$1;
       $j$1$in24 = $j$1$in24$phi;
      } else {
       $$lcssa = $$pre9;
       break;
      }
     }
    } else $$lcssa = $160;
    $164 = $$lcssa + -1 | 0;
    HEAP32[$marker2_num >> 2] = $164;
    $167 = $164;
   } else $167 = $160;
   $i$227 = $i$227 + 1 | 0;
   if (($i$227 | 0) >= ($167 | 0)) {
    $$lcssa15 = $167;
    break;
   } else $160 = $167;
  }
 } else $$lcssa15 = $$lcssa17;
 if ($0 & ($$lcssa15 | 0) > 0) {
  $i$321 = 0;
  $pm$019 = $markerInfo2;
  while (1) {
   HEAP32[$pm$019 >> 2] = HEAP32[$pm$019 >> 2] << 2;
   $171 = $pm$019 + 8 | 0;
   HEAPF64[$171 >> 3] = +HEAPF64[$171 >> 3] * 2.0;
   $174 = $pm$019 + 16 | 0;
   HEAPF64[$174 >> 3] = +HEAPF64[$174 >> 3] * 2.0;
   $177 = $pm$019 + 24 | 0;
   if ((HEAP32[$177 >> 2] | 0) > 0) {
    $j$218 = 0;
    do {
     $180 = $pm$019 + 28 + ($j$218 << 2) | 0;
     HEAP32[$180 >> 2] = HEAP32[$180 >> 2] << 1;
     $183 = $pm$019 + 40028 + ($j$218 << 2) | 0;
     HEAP32[$183 >> 2] = HEAP32[$183 >> 2] << 1;
     $j$218 = $j$218 + 1 | 0;
    } while (($j$218 | 0) < (HEAP32[$177 >> 2] | 0));
   }
   $i$321 = $i$321 + 1 | 0;
   if (($i$321 | 0) >= (HEAP32[$marker2_num >> 2] | 0)) break; else $pm$019 = $pm$019 + 80048 | 0;
  }
 }
 STACKTOP = sp;
 return 0;
}

function _pattern_match($pattHandle, $mode, $data, $size, $code, $dir, $cf) {
 $pattHandle = $pattHandle | 0;
 $mode = $mode | 0;
 $data = $data | 0;
 $size = $size | 0;
 $code = $code | 0;
 $dir = $dir | 0;
 $cf = $cf | 0;
 var $$0 = 0, $$lcssa103 = 0, $$lcssa108 = 0, $1 = 0, $100 = 0, $101 = 0, $102 = 0, $105 = 0, $11 = 0, $111 = 0, $118 = 0.0, $119 = 0, $14 = 0, $2 = 0, $20 = 0, $23 = 0, $26 = 0.0, $31 = 0, $33 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $45 = 0, $51 = 0, $58 = 0.0, $59 = 0, $63 = 0, $65 = 0, $72 = 0, $75 = 0, $81 = 0, $84 = 0, $87 = 0.0, $91 = 0, $93 = 0, $94 = 0, $96 = 0, $97 = 0, $ave$0$lcssa = 0, $ave$055 = 0, $ave$1$lcssa = 0, $ave$183 = 0, $i$056 = 0, $i$150 = 0, $i$235 = 0, $i$384 = 0, $i$478 = 0, $i$560 = 0, $j$038 = 0, $j$166 = 0, $k$042 = 0, $k$1 = 0, $k$1$in = 0, $k$1$lcssa = 0, $k$1102 = 0, $k$270 = 0, $k$3 = 0, $k$3$in = 0, $k$3$lcssa = 0, $k$3106 = 0, $l$043 = 0, $l$171 = 0, $max$0$lcssa = 0.0, $max$044 = 0.0, $max$139 = 0.0, $max$2 = 0.0, $max$3 = 0.0, $max$4$lcssa = 0.0, $max$472 = 0.0, $max$567 = 0.0, $max$6 = 0.0, $max$7 = 0.0, $res1$0$lcssa = 0, $res1$040 = 0, $res1$136 = 0, $res1$2 = 0, $res1$3 = 0, $res1$4$lcssa = 0, $res1$468 = 0, $res1$564 = 0, $res1$6 = 0, $res1$7 = 0, $res2$0$lcssa = 0, $res2$041 = 0, $res2$137 = 0, $res2$2 = 0, $res2$3 = 0, $res2$4$lcssa = 0, $res2$469 = 0, $res2$565 = 0, $res2$6 = 0, $res2$7 = 0, $sum$0$lcssa = 0.0, $sum$049 = 0, $sum$1$lcssa = 0, $sum$134 = 0, $sum$2$lcssa = 0.0, $sum$277 = 0, $sum$3$lcssa = 0, $sum$359 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 L1 : do if (!$pattHandle) {
  HEAP32[$code >> 2] = 0;
  HEAP32[$dir >> 2] = 0;
  HEAPF64[$cf >> 3] = -1.0;
  $$0 = -1;
 } else switch ($mode | 0) {
 case 0:
  {
   $1 = Math_imul($size, $size) | 0;
   $2 = $1 * 3 | 0;
   $4 = _malloc($1 * 12 | 0) | 0;
   if (!$4) {
    _arLog(3, 5471, $vararg_buffer);
    _exit(1);
   }
   if (!$1) $ave$0$lcssa = 0; else {
    $ave$055 = 0;
    $i$056 = 0;
    while (1) {
     $11 = ((HEAPU8[$data + $i$056 >> 0] | 0) ^ 255) + $ave$055 | 0;
     $i$056 = $i$056 + 1 | 0;
     if (($i$056 | 0) >= ($2 | 0)) {
      $ave$0$lcssa = $11;
      break;
     } else $ave$055 = $11;
    }
   }
   $14 = ($ave$0$lcssa | 0) / ($2 | 0) | 0;
   if (!$1) $sum$0$lcssa = 0.0; else {
    $i$150 = 0;
    $sum$049 = 0;
    while (1) {
     $20 = ((HEAPU8[$data + $i$150 >> 0] | 0) ^ 255) - $14 | 0;
     HEAP32[$4 + ($i$150 << 2) >> 2] = $20;
     $23 = (Math_imul($20, $20) | 0) + $sum$049 | 0;
     $i$150 = $i$150 + 1 | 0;
     if (($i$150 | 0) >= ($2 | 0)) {
      $$lcssa103 = $23;
      break;
     } else $sum$049 = $23;
    }
    $sum$0$lcssa = +($$lcssa103 | 0);
   }
   $26 = +Math_sqrt(+$sum$0$lcssa);
   if ($26 / (+($size | 0) * 1.7320508) < 15.0) {
    HEAP32[$code >> 2] = 0;
    HEAP32[$dir >> 2] = 0;
    HEAPF64[$cf >> 3] = -1.0;
    _free($4);
    $$0 = -2;
    break L1;
   }
   $31 = HEAP32[$pattHandle >> 2] | 0;
   $33 = $pattHandle + 12 | 0;
   $34 = $pattHandle + 16 | 0;
   if (($31 | 0) > 0) {
    $36 = HEAP32[$pattHandle + 8 >> 2] | 0;
    $37 = ($1 | 0) == 0;
    $k$042 = -1;
    $l$043 = 0;
    $max$044 = 0.0;
    $res1$040 = -1;
    $res2$041 = -1;
    while (1) {
     $k$1$in = $k$042;
     L25 : while (1) {
      $k$1 = $k$1$in + 1 | 0;
      switch (HEAP32[$36 + ($k$1 << 2) >> 2] | 0) {
      case 0:
       {
        $k$1$in = $k$1;
        break;
       }
      case 2:
       {
        $k$1102 = $k$1;
        $max$3 = $max$044;
        $res1$3 = $res1$040;
        $res2$3 = $res2$041;
        break L25;
        break;
       }
      default:
       {
        $k$1$lcssa = $k$1;
        label = 17;
        break L25;
       }
      }
     }
     if ((label | 0) == 17) {
      label = 0;
      $40 = $k$1$lcssa << 2;
      $41 = HEAP32[$34 >> 2] | 0;
      $j$038 = 0;
      $max$139 = $max$044;
      $res1$136 = $res1$040;
      $res2$137 = $res2$041;
      while (1) {
       $42 = $j$038 + $40 | 0;
       if ($37) $sum$1$lcssa = 0; else {
        $45 = HEAP32[(HEAP32[$33 >> 2] | 0) + ($42 << 2) >> 2] | 0;
        $i$235 = 0;
        $sum$134 = 0;
        while (1) {
         $51 = (Math_imul(HEAP32[$45 + ($i$235 << 2) >> 2] | 0, HEAP32[$4 + ($i$235 << 2) >> 2] | 0) | 0) + $sum$134 | 0;
         $i$235 = $i$235 + 1 | 0;
         if (($i$235 | 0) >= ($2 | 0)) {
          $sum$1$lcssa = $51;
          break;
         } else $sum$134 = $51;
        }
       }
       $58 = +($sum$1$lcssa | 0) / +HEAPF64[$41 + ($42 << 3) >> 3] / $26;
       $59 = $58 > $max$139;
       $res1$2 = $59 ? $j$038 : $res1$136;
       $res2$2 = $59 ? $k$1$lcssa : $res2$137;
       $max$2 = $59 ? $58 : $max$139;
       $j$038 = $j$038 + 1 | 0;
       if (($j$038 | 0) == 4) {
        $k$1102 = $k$1$lcssa;
        $max$3 = $max$2;
        $res1$3 = $res1$2;
        $res2$3 = $res2$2;
        break;
       } else {
        $max$139 = $max$2;
        $res1$136 = $res1$2;
        $res2$137 = $res2$2;
       }
      }
     }
     $l$043 = $l$043 + 1 | 0;
     if (($l$043 | 0) >= ($31 | 0)) {
      $max$0$lcssa = $max$3;
      $res1$0$lcssa = $res1$3;
      $res2$0$lcssa = $res2$3;
      break;
     } else {
      $k$042 = $k$1102;
      $max$044 = $max$3;
      $res1$040 = $res1$3;
      $res2$041 = $res2$3;
     }
    }
   } else {
    $max$0$lcssa = 0.0;
    $res1$0$lcssa = -1;
    $res2$0$lcssa = -1;
   }
   HEAP32[$dir >> 2] = $res1$0$lcssa;
   HEAP32[$code >> 2] = $res2$0$lcssa;
   HEAPF64[$cf >> 3] = $max$0$lcssa;
   _free($4);
   $$0 = 0;
   break L1;
   break;
  }
 case 1:
  {
   $63 = Math_imul($size, $size) | 0;
   $65 = _malloc($63 << 2) | 0;
   if (!$65) {
    _arLog(3, 5471, $vararg_buffer1);
    _exit(1);
   }
   if (!$63) $ave$1$lcssa = 0; else {
    $ave$183 = 0;
    $i$384 = 0;
    while (1) {
     $72 = ((HEAPU8[$data + $i$384 >> 0] | 0) ^ 255) + $ave$183 | 0;
     $i$384 = $i$384 + 1 | 0;
     if (($i$384 | 0) >= ($63 | 0)) {
      $ave$1$lcssa = $72;
      break;
     } else $ave$183 = $72;
    }
   }
   $75 = ($ave$1$lcssa | 0) / ($63 | 0) | 0;
   if (!$63) $sum$2$lcssa = 0.0; else {
    $i$478 = 0;
    $sum$277 = 0;
    while (1) {
     $81 = ((HEAPU8[$data + $i$478 >> 0] | 0) ^ 255) - $75 | 0;
     HEAP32[$65 + ($i$478 << 2) >> 2] = $81;
     $84 = (Math_imul($81, $81) | 0) + $sum$277 | 0;
     $i$478 = $i$478 + 1 | 0;
     if (($i$478 | 0) >= ($63 | 0)) {
      $$lcssa108 = $84;
      break;
     } else $sum$277 = $84;
    }
    $sum$2$lcssa = +($$lcssa108 | 0);
   }
   $87 = +Math_sqrt(+$sum$2$lcssa);
   if ($87 / +($size | 0) < 15.0) {
    HEAP32[$code >> 2] = 0;
    HEAP32[$dir >> 2] = 0;
    HEAPF64[$cf >> 3] = -1.0;
    _free($65);
    $$0 = -2;
    break L1;
   }
   $91 = HEAP32[$pattHandle >> 2] | 0;
   $93 = $pattHandle + 20 | 0;
   $94 = $pattHandle + 24 | 0;
   if (($91 | 0) > 0) {
    $96 = HEAP32[$pattHandle + 8 >> 2] | 0;
    $97 = ($63 | 0) == 0;
    $k$270 = -1;
    $l$171 = 0;
    $max$472 = 0.0;
    $res1$468 = -1;
    $res2$469 = -1;
    while (1) {
     $k$3$in = $k$270;
     L58 : while (1) {
      $k$3 = $k$3$in + 1 | 0;
      switch (HEAP32[$96 + ($k$3 << 2) >> 2] | 0) {
      case 0:
       {
        $k$3$in = $k$3;
        break;
       }
      case 2:
       {
        $k$3106 = $k$3;
        $max$7 = $max$472;
        $res1$7 = $res1$468;
        $res2$7 = $res2$469;
        break L58;
        break;
       }
      default:
       {
        $k$3$lcssa = $k$3;
        label = 37;
        break L58;
       }
      }
     }
     if ((label | 0) == 37) {
      label = 0;
      $100 = $k$3$lcssa << 2;
      $101 = HEAP32[$94 >> 2] | 0;
      $j$166 = 0;
      $max$567 = $max$472;
      $res1$564 = $res1$468;
      $res2$565 = $res2$469;
      while (1) {
       $102 = $j$166 + $100 | 0;
       if ($97) $sum$3$lcssa = 0; else {
        $105 = HEAP32[(HEAP32[$93 >> 2] | 0) + ($102 << 2) >> 2] | 0;
        $i$560 = 0;
        $sum$359 = 0;
        while (1) {
         $111 = (Math_imul(HEAP32[$105 + ($i$560 << 2) >> 2] | 0, HEAP32[$65 + ($i$560 << 2) >> 2] | 0) | 0) + $sum$359 | 0;
         $i$560 = $i$560 + 1 | 0;
         if (($i$560 | 0) >= ($63 | 0)) {
          $sum$3$lcssa = $111;
          break;
         } else $sum$359 = $111;
        }
       }
       $118 = +($sum$3$lcssa | 0) / +HEAPF64[$101 + ($102 << 3) >> 3] / $87;
       $119 = $118 > $max$567;
       $res1$6 = $119 ? $j$166 : $res1$564;
       $res2$6 = $119 ? $k$3$lcssa : $res2$565;
       $max$6 = $119 ? $118 : $max$567;
       $j$166 = $j$166 + 1 | 0;
       if (($j$166 | 0) == 4) {
        $k$3106 = $k$3$lcssa;
        $max$7 = $max$6;
        $res1$7 = $res1$6;
        $res2$7 = $res2$6;
        break;
       } else {
        $max$567 = $max$6;
        $res1$564 = $res1$6;
        $res2$565 = $res2$6;
       }
      }
     }
     $l$171 = $l$171 + 1 | 0;
     if (($l$171 | 0) >= ($91 | 0)) {
      $max$4$lcssa = $max$7;
      $res1$4$lcssa = $res1$7;
      $res2$4$lcssa = $res2$7;
      break;
     } else {
      $k$270 = $k$3106;
      $max$472 = $max$7;
      $res1$468 = $res1$7;
      $res2$469 = $res2$7;
     }
    }
   } else {
    $max$4$lcssa = 0.0;
    $res1$4$lcssa = -1;
    $res2$4$lcssa = -1;
   }
   HEAP32[$dir >> 2] = $res1$4$lcssa;
   HEAP32[$code >> 2] = $res2$4$lcssa;
   HEAPF64[$cf >> 3] = $max$4$lcssa;
   _free($65);
   $$0 = 0;
   break L1;
   break;
  }
 default:
  {
   $$0 = -1;
   break L1;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arMultiReadConfigFile($filename, $pattHandle) {
 $filename = $filename | 0;
 $pattHandle = $pattHandle | 0;
 var $$0 = 0, $0 = 0, $108 = 0, $11 = 0, $118 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $21 = 0, $28 = 0, $34 = 0, $4 = 0, $45 = 0, $49 = 0, $50 = 0, $52 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $79 = 0.0, $83 = 0.0, $9 = 0, $buf = 0, $dummy = 0, $i$052 = 0, $i$052$lcssa64 = 0, $i$052$lcssa65 = 0, $i$052$lcssa66 = 0, $j$0 = 0, $j$150 = 0, $num = 0, $pattPath = 0, $patt_type$0$lcssa = 0, $patt_type$051 = 0, $patt_type$1 = 0, $t1 = 0, $t2 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer17 = 0, $vararg_buffer21 = 0, $vararg_buffer24 = 0, $vararg_buffer28 = 0, $vararg_buffer31 = 0, $vararg_buffer35 = 0, $vararg_buffer41 = 0, $vararg_buffer45 = 0, $vararg_buffer49 = 0, $vararg_buffer5 = 0, $vararg_buffer55 = 0, $vararg_buffer59 = 0, $vararg_buffer8 = 0, $wpos3d = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 2544 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer59 = sp + 208 | 0;
 $vararg_buffer55 = sp + 200 | 0;
 $vararg_buffer49 = sp + 184 | 0;
 $vararg_buffer45 = sp + 176 | 0;
 $vararg_buffer41 = sp + 168 | 0;
 $vararg_buffer35 = sp + 152 | 0;
 $vararg_buffer31 = sp + 144 | 0;
 $vararg_buffer28 = sp + 136 | 0;
 $vararg_buffer24 = sp + 128 | 0;
 $vararg_buffer21 = sp + 120 | 0;
 $vararg_buffer17 = sp + 112 | 0;
 $vararg_buffer13 = sp + 104 | 0;
 $vararg_buffer11 = sp + 96 | 0;
 $vararg_buffer8 = sp + 88 | 0;
 $vararg_buffer5 = sp + 80 | 0;
 $vararg_buffer1 = sp + 72 | 0;
 $vararg_buffer = sp + 64 | 0;
 $wpos3d = sp;
 $buf = sp + 2280 | 0;
 $pattPath = sp + 232 | 0;
 $dummy = sp + 224 | 0;
 $num = sp + 220 | 0;
 $t1 = sp + 216 | 0;
 $t2 = sp + 212 | 0;
 $0 = _fopen($filename, 5306) | 0;
 L1 : do if (!$0) {
  HEAP32[$vararg_buffer >> 2] = $filename;
  _arLog(3, 5308, $vararg_buffer);
  $2 = ___errno_location() | 0;
  $4 = _strerror(HEAP32[$2 >> 2] | 0) | 0;
  HEAP32[$vararg_buffer1 >> 2] = 13835;
  HEAP32[$vararg_buffer1 + 4 >> 2] = $4;
  _arLog(3, 5361, $vararg_buffer1);
  $$0 = 0;
 } else {
  _get_buff($buf, $0);
  HEAP32[$vararg_buffer5 >> 2] = $num;
  if ((_sscanf($buf, 5367, $vararg_buffer5) | 0) != 1) {
   HEAP32[$vararg_buffer8 >> 2] = $filename;
   _arLog(3, 5370, $vararg_buffer8);
   _fclose($0) | 0;
   $$0 = 0;
   break;
  }
  $7 = HEAP32[$num >> 2] | 0;
  $9 = _malloc($7 * 320 | 0) | 0;
  if (!$9) {
   _arLog(3, 5471, $vararg_buffer11);
   _exit(1);
  }
  $11 = $wpos3d + 8 | 0;
  $12 = $wpos3d + 16 | 0;
  $13 = $wpos3d + 24 | 0;
  $14 = $wpos3d + 32 | 0;
  $15 = $wpos3d + 40 | 0;
  $16 = $wpos3d + 48 | 0;
  $17 = $wpos3d + 56 | 0;
  $18 = ($pattHandle | 0) == 0;
  L10 : do if (($7 | 0) > 0) {
   $i$052 = 0;
   $patt_type$051 = 0;
   L11 : while (1) {
    _get_buff($buf, $0);
    $20 = $9 + ($i$052 * 320 | 0) | 0;
    $21 = $9 + ($i$052 * 320 | 0) + 312 | 0;
    HEAP32[$vararg_buffer13 >> 2] = $21;
    HEAP32[$vararg_buffer13 + 4 >> 2] = $dummy;
    if ((_sscanf($buf, 5488, $vararg_buffer13) | 0) == 1) {
     $34 = HEAP32[$21 >> 2] | 0;
     HEAP32[$20 >> 2] = ($34 & -32768 | 0) == 0 & 0 == 0 ? $34 & 32767 : 0;
     HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 1;
     $patt_type$1 = $patt_type$051 | 2;
    } else {
     if ($18) {
      label = 10;
      break;
     }
     if (!(_arUtilGetDirectoryNameFromPath($pattPath, $filename, 2048, 1) | 0)) {
      label = 12;
      break;
     }
     _strncat($pattPath, $buf, 2047 - (_strlen($pattPath) | 0) | 0) | 0;
     $28 = _arPattLoad($pattHandle, $pattPath) | 0;
     HEAP32[$20 >> 2] = $28;
     if (($28 | 0) < 0) {
      label = 14;
      break;
     }
     HEAP32[$9 + ($i$052 * 320 | 0) + 4 >> 2] = 0;
     $patt_type$1 = $patt_type$051 | 1;
    }
    _get_buff($buf, $0);
    $45 = $9 + ($i$052 * 320 | 0) + 8 | 0;
    HEAP32[$vararg_buffer28 >> 2] = $45;
    if ((_sscanf($buf, 5784, $vararg_buffer28) | 0) != 1) {
     $i$052$lcssa64 = $i$052;
     label = 18;
     break;
    }
    _get_buff($buf, $0);
    $49 = $9 + ($i$052 * 320 | 0) + 16 | 0;
    $50 = $9 + ($i$052 * 320 | 0) + 24 | 0;
    $52 = $9 + ($i$052 * 320 | 0) + 40 | 0;
    HEAP32[$vararg_buffer35 >> 2] = $49;
    HEAP32[$vararg_buffer35 + 4 >> 2] = $50;
    HEAP32[$vararg_buffer35 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 32;
    HEAP32[$vararg_buffer35 + 12 >> 2] = $52;
    if ((_sscanf($buf, 5893, $vararg_buffer35) | 0) == 4) $j$0 = 1; else {
     HEAP32[$vararg_buffer41 >> 2] = $t1;
     HEAP32[$vararg_buffer41 + 4 >> 2] = $t2;
     if ((_sscanf($buf, 5909, $vararg_buffer41) | 0) == 2) $j$0 = 0; else {
      $i$052$lcssa65 = $i$052;
      label = 21;
      break;
     }
    }
    do {
     _get_buff($buf, $0);
     HEAP32[$vararg_buffer49 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5);
     HEAP32[$vararg_buffer49 + 4 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 8;
     HEAP32[$vararg_buffer49 + 8 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 16;
     HEAP32[$vararg_buffer49 + 12 >> 2] = $9 + ($i$052 * 320 | 0) + 16 + ($j$0 << 5) + 24;
     if ((_sscanf($buf, 5893, $vararg_buffer49) | 0) != 4) {
      $i$052$lcssa66 = $i$052;
      label = 23;
      break L11;
     }
     $j$0 = $j$0 + 1 | 0;
    } while (($j$0 | 0) < 3);
    _arUtilMatInv($49, $9 + ($i$052 * 320 | 0) + 112 | 0) | 0;
    $68 = +HEAPF64[$45 >> 3];
    $69 = $68 * -.5;
    HEAPF64[$wpos3d >> 3] = $69;
    $70 = $68 * .5;
    HEAPF64[$11 >> 3] = $70;
    HEAPF64[$12 >> 3] = $70;
    HEAPF64[$13 >> 3] = $70;
    HEAPF64[$14 >> 3] = $70;
    HEAPF64[$15 >> 3] = $69;
    HEAPF64[$16 >> 3] = $69;
    HEAPF64[$17 >> 3] = $69;
    $71 = $9 + ($i$052 * 320 | 0) + 48 | 0;
    $72 = $9 + ($i$052 * 320 | 0) + 56 | 0;
    $73 = $9 + ($i$052 * 320 | 0) + 72 | 0;
    $74 = $9 + ($i$052 * 320 | 0) + 80 | 0;
    $75 = $9 + ($i$052 * 320 | 0) + 88 | 0;
    $76 = $9 + ($i$052 * 320 | 0) + 104 | 0;
    $j$150 = 0;
    do {
     $79 = +HEAPF64[$wpos3d + ($j$150 << 4) >> 3];
     $83 = +HEAPF64[$wpos3d + ($j$150 << 4) + 8 >> 3];
     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) >> 3] = +HEAPF64[$52 >> 3] + (+HEAPF64[$49 >> 3] * $79 + +HEAPF64[$50 >> 3] * $83);
     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 8 >> 3] = +HEAPF64[$73 >> 3] + (+HEAPF64[$71 >> 3] * $79 + +HEAPF64[$72 >> 3] * $83);
     HEAPF64[$9 + ($i$052 * 320 | 0) + 208 + ($j$150 * 24 | 0) + 16 >> 3] = +HEAPF64[$76 >> 3] + (+HEAPF64[$74 >> 3] * $79 + +HEAPF64[$75 >> 3] * $83);
     $j$150 = $j$150 + 1 | 0;
    } while (($j$150 | 0) != 4);
    $i$052 = $i$052 + 1 | 0;
    if (($i$052 | 0) >= (HEAP32[$num >> 2] | 0)) {
     $patt_type$0$lcssa = $patt_type$1;
     break L10;
    } else $patt_type$051 = $patt_type$1;
   }
   if ((label | 0) == 10) {
    HEAP32[$vararg_buffer17 >> 2] = $filename;
    HEAP32[$vararg_buffer17 + 4 >> 2] = $buf;
    _arLog(3, 5495, $vararg_buffer17);
   } else if ((label | 0) == 12) {
    HEAP32[$vararg_buffer21 >> 2] = $filename;
    _arLog(3, 5623, $vararg_buffer21);
   } else if ((label | 0) == 14) {
    HEAP32[$vararg_buffer24 >> 2] = $filename;
    HEAP32[$vararg_buffer24 + 4 >> 2] = $pattPath;
    _arLog(3, 5707, $vararg_buffer24);
   } else if ((label | 0) == 18) {
    HEAP32[$vararg_buffer31 >> 2] = $filename;
    HEAP32[$vararg_buffer31 + 4 >> 2] = $i$052$lcssa64 + 1;
    _arLog(3, 5788, $vararg_buffer31);
   } else if ((label | 0) == 21) {
    HEAP32[$vararg_buffer45 >> 2] = $filename;
    HEAP32[$vararg_buffer45 + 4 >> 2] = $i$052$lcssa65 + 1;
    _arLog(3, 5915, $vararg_buffer45);
   } else if ((label | 0) == 23) {
    HEAP32[$vararg_buffer55 >> 2] = $filename;
    HEAP32[$vararg_buffer55 + 4 >> 2] = $i$052$lcssa66 + 1;
    _arLog(3, 5915, $vararg_buffer55);
   }
   _fclose($0) | 0;
   _free($9);
   $$0 = 0;
   break L1;
  } else $patt_type$0$lcssa = 0; while (0);
  _fclose($0) | 0;
  $108 = _malloc(136) | 0;
  if (!$108) {
   _arLog(3, 5471, $vararg_buffer59);
   _exit(1);
  }
  HEAP32[$108 >> 2] = $9;
  HEAP32[$108 + 4 >> 2] = HEAP32[$num >> 2];
  HEAP32[$108 + 104 >> 2] = 0;
  do if (($patt_type$0$lcssa & 3 | 0) == 3) HEAP32[$108 + 108 >> 2] = 2; else {
   $118 = $108 + 108 | 0;
   if (!($patt_type$0$lcssa & 1)) {
    HEAP32[$118 >> 2] = 1;
    break;
   } else {
    HEAP32[$118 >> 2] = 0;
    break;
   }
  } while (0);
  HEAPF64[$108 + 112 >> 3] = .5;
  HEAPF64[$108 + 120 >> 3] = .5;
  $$0 = $108;
 } while (0);
 STACKTOP = sp;
 return $$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, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 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, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 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, $_0$0 = 0, $_0$1 = 0, $q_sroa_1_1198$looptemp = 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) {
  $4 = ($rem | 0) != 0;
  if (!$d_sroa_1_4_extract_trunc) {
   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 | 0;
   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) {
  if ($17) {
   if ($rem) {
    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) {
   if ($rem) {
    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)) {
   if ($rem) {
    HEAP32[$rem >> 2] = $a$0 | 0;
    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;
  }
  $51 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($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$1 = 0;
   $_0$0 = 0;
   return (tempRet0 = $_0$1, $_0$0) | 0;
  }
  HEAP32[$rem >> 2] = $a$0 | 0;
  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) {
   $119 = (Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0) - (Math_clz32($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$1 = 0;
    $_0$0 = 0;
    return (tempRet0 = $_0$1, $_0$0) | 0;
   }
   HEAP32[$rem >> 2] = $a$0 | 0;
   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) {
   $88 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 - (Math_clz32($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) {
   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 = $a$0 | 0 | 0;
   return (tempRet0 = $_0$1, $_0$0) | 0;
  } else {
   $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0;
   $_0$1 = $n_sroa_1_4_extract_trunc >>> ($78 >>> 0) | 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) {
  $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 = $b$0 | 0 | 0;
  $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 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -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;
  do {
   $q_sroa_1_1198$looptemp = $q_sroa_1_1198;
   $q_sroa_1_1198 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1;
   $q_sroa_0_1199 = $carry_0203 | $q_sroa_0_1199 << 1;
   $r_sroa_0_0_insert_insert42$0 = $r_sroa_0_1201 << 1 | $q_sroa_1_1198$looptemp >>> 31 | 0;
   $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;
   $carry_0203 = $151$0 & 1;
   $r_sroa_0_1201 = _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_1_1200 = tempRet0;
   $sr_1202 = $sr_1202 - 1 | 0;
  } while (($sr_1202 | 0) != 0);
  $q_sroa_1_1_lcssa = $q_sroa_1_1198;
  $q_sroa_0_1_lcssa = $q_sroa_0_1199;
  $r_sroa_1_1_lcssa = $r_sroa_1_1200;
  $r_sroa_0_1_lcssa = $r_sroa_0_1201;
  $carry_0_lcssa$1 = 0;
  $carry_0_lcssa$0 = $carry_0203;
 }
 $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa;
 $q_sroa_0_0_insert_ext75$1 = 0;
 if ($rem) {
  HEAP32[$rem >> 2] = $r_sroa_0_1_lcssa;
  HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa;
 }
 $_0$1 = ($q_sroa_0_0_insert_ext75$0 | 0) >>> 31 | ($q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$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;
}

function _icpGetJ_U_S($J_U_S, $matXc2U, $matXw2Xc, $worldCoord) {
 $J_U_S = $J_U_S | 0;
 $matXc2U = $matXc2U | 0;
 $matXw2Xc = $matXw2Xc | 0;
 $worldCoord = $worldCoord | 0;
 var $$0 = 0, $$lcssa = 0.0, $0 = 0.0, $1 = 0.0, $100 = 0, $101 = 0, $104 = 0, $106 = 0, $108 = 0, $109 = 0, $11 = 0.0, $115 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $128 = 0.0, $129 = 0.0, $132 = 0.0, $136 = 0.0, $14 = 0.0, $141 = 0.0, $143 = 0.0, $146 = 0.0, $150 = 0.0, $155 = 0.0, $157 = 0.0, $16 = 0.0, $160 = 0.0, $164 = 0.0, $169 = 0.0, $171 = 0.0, $18 = 0.0, $19 = 0.0, $2 = 0.0, $202 = 0.0, $204 = 0.0, $206 = 0.0, $207 = 0, $21 = 0.0, $211 = 0.0, $215 = 0.0, $22 = 0.0, $24 = 0.0, $26 = 0.0, $28 = 0.0, $29 = 0.0, $31 = 0.0, $32 = 0.0, $34 = 0.0, $4 = 0.0, $5 = 0, $52 = 0.0, $6 = 0.0, $7 = 0.0, $71 = 0.0, $79 = 0.0, $9 = 0.0, $92 = 0, $93 = 0, $96 = 0, $98 = 0, $J_T_S$i = 0, $J_U_Xc = 0, $J_Xc_S = 0, $J_Xc_T$i = 0, $i$0$i7 = 0, $i$04 = 0, $j$0$i8 = 0, $j$05 = 0, $k$0$i6 = 0, $vararg_buffer = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 1072 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp + 1056 | 0;
 $J_Xc_T$i = sp + 768 | 0;
 $J_T_S$i = sp + 192 | 0;
 $J_Xc_S = sp + 48 | 0;
 $J_U_Xc = sp;
 $0 = +HEAPF64[$matXw2Xc >> 3];
 $1 = +HEAPF64[$worldCoord >> 3];
 $2 = $0 * $1;
 $4 = +HEAPF64[$matXw2Xc + 8 >> 3];
 $5 = $worldCoord + 8 | 0;
 $6 = +HEAPF64[$5 >> 3];
 $7 = $4 * $6;
 $9 = +HEAPF64[$matXw2Xc + 16 >> 3];
 $11 = +HEAPF64[$worldCoord + 16 >> 3];
 $12 = $9 * $11;
 $14 = +HEAPF64[$matXw2Xc + 24 >> 3];
 $16 = +HEAPF64[$matXw2Xc + 32 >> 3];
 $18 = +HEAPF64[$matXw2Xc + 40 >> 3];
 $19 = $6 * $18;
 $21 = +HEAPF64[$matXw2Xc + 48 >> 3];
 $22 = $11 * $21;
 $24 = +HEAPF64[$matXw2Xc + 56 >> 3];
 $26 = +HEAPF64[$matXw2Xc + 64 >> 3];
 $28 = +HEAPF64[$matXw2Xc + 72 >> 3];
 $29 = $6 * $28;
 $31 = +HEAPF64[$matXw2Xc + 80 >> 3];
 $32 = $11 * $31;
 $34 = +HEAPF64[$matXw2Xc + 88 >> 3];
 HEAPF64[$J_Xc_T$i >> 3] = $2;
 HEAPF64[$J_Xc_T$i + 8 >> 3] = $0 * $6;
 HEAPF64[$J_Xc_T$i + 16 >> 3] = $0 * $11;
 HEAPF64[$J_Xc_T$i + 24 >> 3] = $1 * $4;
 HEAPF64[$J_Xc_T$i + 32 >> 3] = $7;
 HEAPF64[$J_Xc_T$i + 40 >> 3] = $11 * $4;
 HEAPF64[$J_Xc_T$i + 48 >> 3] = $1 * $9;
 HEAPF64[$J_Xc_T$i + 56 >> 3] = $6 * $9;
 HEAPF64[$J_Xc_T$i + 64 >> 3] = $12;
 HEAPF64[$J_Xc_T$i + 72 >> 3] = $0;
 HEAPF64[$J_Xc_T$i + 80 >> 3] = $4;
 HEAPF64[$J_Xc_T$i + 88 >> 3] = $9;
 $52 = $1 * $16;
 HEAPF64[$J_Xc_T$i + 96 >> 3] = $52;
 HEAPF64[$J_Xc_T$i + 104 >> 3] = $6 * $16;
 HEAPF64[$J_Xc_T$i + 112 >> 3] = $11 * $16;
 HEAPF64[$J_Xc_T$i + 120 >> 3] = $1 * $18;
 HEAPF64[$J_Xc_T$i + 128 >> 3] = $19;
 HEAPF64[$J_Xc_T$i + 136 >> 3] = $11 * $18;
 HEAPF64[$J_Xc_T$i + 144 >> 3] = $1 * $21;
 HEAPF64[$J_Xc_T$i + 152 >> 3] = $6 * $21;
 HEAPF64[$J_Xc_T$i + 160 >> 3] = $22;
 HEAPF64[$J_Xc_T$i + 168 >> 3] = $16;
 HEAPF64[$J_Xc_T$i + 176 >> 3] = $18;
 HEAPF64[$J_Xc_T$i + 184 >> 3] = $21;
 $71 = $26 * $1;
 HEAPF64[$J_Xc_T$i + 192 >> 3] = $71;
 HEAPF64[$J_Xc_T$i + 200 >> 3] = $6 * $26;
 HEAPF64[$J_Xc_T$i + 208 >> 3] = $11 * $26;
 HEAPF64[$J_Xc_T$i + 216 >> 3] = $1 * $28;
 $79 = +HEAPF64[$5 >> 3];
 HEAPF64[$J_Xc_T$i + 224 >> 3] = $28 * $79;
 HEAPF64[$J_Xc_T$i + 232 >> 3] = $11 * $28;
 HEAPF64[$J_Xc_T$i + 240 >> 3] = $1 * $31;
 HEAPF64[$J_Xc_T$i + 248 >> 3] = $79 * $31;
 HEAPF64[$J_Xc_T$i + 256 >> 3] = $32;
 HEAPF64[$J_Xc_T$i + 264 >> 3] = $26;
 HEAPF64[$J_Xc_T$i + 272 >> 3] = $28;
 HEAPF64[$J_Xc_T$i + 280 >> 3] = $31;
 $92 = $J_T_S$i + 64 | 0;
 dest = $J_T_S$i;
 stop = dest + 64 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$92 >> 3] = -1.0;
 $93 = $J_T_S$i + 72 | 0;
 HEAP32[$93 >> 2] = 0;
 HEAP32[$93 + 4 >> 2] = 0;
 HEAP32[$93 + 8 >> 2] = 0;
 HEAP32[$93 + 12 >> 2] = 0;
 HEAP32[$93 + 16 >> 2] = 0;
 HEAP32[$93 + 20 >> 2] = 0;
 HEAP32[$93 + 24 >> 2] = 0;
 HEAP32[$93 + 28 >> 2] = 0;
 HEAPF64[$J_T_S$i + 104 >> 3] = 1.0;
 $96 = $J_T_S$i + 160 | 0;
 dest = $J_T_S$i + 112 | 0;
 stop = dest + 48 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$96 >> 3] = 1.0;
 $98 = $J_T_S$i + 240 | 0;
 dest = $J_T_S$i + 168 | 0;
 stop = dest + 72 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$98 >> 3] = -1.0;
 $100 = $J_T_S$i + 296 | 0;
 dest = $J_T_S$i + 248 | 0;
 stop = dest + 48 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$100 >> 3] = -1.0;
 $101 = $J_T_S$i + 304 | 0;
 HEAP32[$101 >> 2] = 0;
 HEAP32[$101 + 4 >> 2] = 0;
 HEAP32[$101 + 8 >> 2] = 0;
 HEAP32[$101 + 12 >> 2] = 0;
 HEAP32[$101 + 16 >> 2] = 0;
 HEAP32[$101 + 20 >> 2] = 0;
 HEAP32[$101 + 24 >> 2] = 0;
 HEAP32[$101 + 28 >> 2] = 0;
 HEAPF64[$J_T_S$i + 336 >> 3] = 1.0;
 $104 = $J_T_S$i + 456 | 0;
 dest = $J_T_S$i + 344 | 0;
 stop = dest + 112 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$104 >> 3] = 1.0;
 $106 = $J_T_S$i + 512 | 0;
 dest = $J_T_S$i + 464 | 0;
 stop = dest + 48 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$106 >> 3] = 1.0;
 $108 = $J_T_S$i + 568 | 0;
 dest = $J_T_S$i + 520 | 0;
 stop = dest + 48 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAPF64[$108 >> 3] = 1.0;
 $j$0$i8 = 0;
 do {
  $i$0$i7 = 0;
  do {
   $109 = $J_Xc_S + ($j$0$i8 * 48 | 0) + ($i$0$i7 << 3) | 0;
   HEAPF64[$109 >> 3] = 0.0;
   $116 = 0.0;
   $k$0$i6 = 0;
   while (1) {
    $115 = $116 + +HEAPF64[$J_Xc_T$i + ($j$0$i8 * 96 | 0) + ($k$0$i6 << 3) >> 3] * +HEAPF64[$J_T_S$i + ($k$0$i6 * 48 | 0) + ($i$0$i7 << 3) >> 3];
    $k$0$i6 = $k$0$i6 + 1 | 0;
    if (($k$0$i6 | 0) == 12) {
     $$lcssa = $115;
     break;
    } else $116 = $115;
   }
   HEAPF64[$109 >> 3] = $$lcssa;
   $i$0$i7 = $i$0$i7 + 1 | 0;
  } while (($i$0$i7 | 0) != 6);
  $j$0$i8 = $j$0$i8 + 1 | 0;
 } while (($j$0$i8 | 0) != 3);
 $122 = $14 + ($2 + $7 + $12);
 $125 = $24 + ($52 + $19 + $22);
 $128 = $34 + ($71 + $29 + $32);
 $129 = +HEAPF64[$matXc2U >> 3];
 $132 = +HEAPF64[$matXc2U + 8 >> 3];
 $136 = +HEAPF64[$matXc2U + 16 >> 3];
 $141 = +HEAPF64[$matXc2U + 24 >> 3] + ($122 * $129 + $125 * $132 + $128 * $136);
 $143 = +HEAPF64[$matXc2U + 32 >> 3];
 $146 = +HEAPF64[$matXc2U + 40 >> 3];
 $150 = +HEAPF64[$matXc2U + 48 >> 3];
 $155 = +HEAPF64[$matXc2U + 56 >> 3] + ($122 * $143 + $125 * $146 + $128 * $150);
 $157 = +HEAPF64[$matXc2U + 64 >> 3];
 $160 = +HEAPF64[$matXc2U + 72 >> 3];
 $164 = +HEAPF64[$matXc2U + 80 >> 3];
 $169 = +HEAPF64[$matXc2U + 88 >> 3] + ($122 * $157 + $125 * $160 + $128 * $164);
 if ($169 == 0.0) {
  _arLog(3, 5089, $vararg_buffer);
  $$0 = -1;
 } else {
  $171 = $169 * $169;
  HEAPF64[$J_U_Xc >> 3] = ($129 * $169 - $141 * $157) / $171;
  HEAPF64[$J_U_Xc + 8 >> 3] = ($169 * $132 - $141 * $160) / $171;
  HEAPF64[$J_U_Xc + 16 >> 3] = ($169 * $136 - $141 * $164) / $171;
  HEAPF64[$J_U_Xc + 24 >> 3] = ($169 * $143 - $155 * $157) / $171;
  HEAPF64[$J_U_Xc + 32 >> 3] = ($169 * $146 - $155 * $160) / $171;
  HEAPF64[$J_U_Xc + 40 >> 3] = ($169 * $150 - $155 * $164) / $171;
  $j$05 = 0;
  do {
   $202 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) >> 3];
   $204 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 8 >> 3];
   $206 = +HEAPF64[$J_U_Xc + ($j$05 * 24 | 0) + 16 >> 3];
   $i$04 = 0;
   do {
    $207 = $J_U_S + ($j$05 * 48 | 0) + ($i$04 << 3) | 0;
    HEAPF64[$207 >> 3] = 0.0;
    $211 = $202 * +HEAPF64[$J_Xc_S + ($i$04 << 3) >> 3] + 0.0;
    HEAPF64[$207 >> 3] = $211;
    $215 = $211 + $204 * +HEAPF64[$J_Xc_S + 48 + ($i$04 << 3) >> 3];
    HEAPF64[$207 >> 3] = $215;
    HEAPF64[$207 >> 3] = $215 + $206 * +HEAPF64[$J_Xc_S + 96 + ($i$04 << 3) >> 3];
    $i$04 = $i$04 + 1 | 0;
   } while (($i$04 | 0) != 6);
   $j$05 = $j$05 + 1 | 0;
  } while (($j$05 | 0) != 2);
  $$0 = 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_120parse_function_paramINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i$i$i = 0, $$0$i$i$i18 = 0, $$0$i$i1027 = 0, $$0$i$i24 = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $104 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $118 = 0, $120 = 0, $123 = 0, $124 = 0, $15 = 0, $16 = 0, $2 = 0, $22 = 0, $29 = 0, $3 = 0, $30 = 0, $39 = 0, $4 = 0, $42 = 0, $43 = 0, $45 = 0, $5 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $59 = 0, $61 = 0, $64 = 0, $65 = 0, $69 = 0, $74 = 0, $75 = 0, $81 = 0, $88 = 0, $89 = 0, $98 = 0, $__p$0$i$i23 = 0, $__p$0$i$i926 = 0, $__p$0$ph$i$i = 0, $__p$0$ph$i$i7 = 0, $__v$i$i17 = 0, $cv = 0, $cv1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i17 = sp + 108 | 0;
 $cv = sp + 104 | 0;
 $0 = sp + 80 | 0;
 $1 = sp + 64 | 0;
 $2 = sp + 52 | 0;
 $cv1 = sp + 48 | 0;
 $3 = sp + 24 | 0;
 $4 = sp + 12 | 0;
 $5 = sp;
 L1 : do if (($last - $first | 0) > 2) if ((HEAP8[$first >> 0] | 0) == 102) {
  switch (HEAP8[$first + 1 >> 0] | 0) {
  case 112:
   {
    $15 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first + 2 | 0, $last, $cv) | 0;
    $16 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($15, $last) | 0;
    if (($16 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    if ((HEAP8[$16 >> 0] | 0) != 95) {
     $$0 = $first;
     break L1;
    }
    $22 = $16 - $15 | 0;
    if ($22 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);
    if ($22 >>> 0 < 11) {
     HEAP8[$2 >> 0] = $22 << 1;
     $__p$0$ph$i$i = $2 + 1 | 0;
    } else {
     $29 = $22 + 16 & -16;
     $30 = _malloc($29) | 0;
     HEAP32[$2 + 8 >> 2] = $30;
     HEAP32[$2 >> 2] = $29 | 1;
     HEAP32[$2 + 4 >> 2] = $22;
     $__p$0$ph$i$i = $30;
    }
    if (($15 | 0) != ($16 | 0)) {
     $$0$i$i24 = $15;
     $__p$0$i$i23 = $__p$0$ph$i$i;
     while (1) {
      HEAP8[$__p$0$i$i23 >> 0] = HEAP8[$$0$i$i24 >> 0] | 0;
      $$0$i$i24 = $$0$i$i24 + 1 | 0;
      if (($$0$i$i24 | 0) == ($16 | 0)) break; else $__p$0$i$i23 = $__p$0$i$i23 + 1 | 0;
     }
    }
    HEAP8[$__p$0$ph$i$i + $22 >> 0] = 0;
    $39 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 14149) | 0;
    HEAP32[$1 >> 2] = HEAP32[$39 >> 2];
    HEAP32[$1 + 4 >> 2] = HEAP32[$39 + 4 >> 2];
    HEAP32[$1 + 8 >> 2] = HEAP32[$39 + 8 >> 2];
    HEAP32[$39 >> 2] = 0;
    HEAP32[$39 + 4 >> 2] = 0;
    HEAP32[$39 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
    $42 = $db + 4 | 0;
    $43 = HEAP32[$42 >> 2] | 0;
    $45 = HEAP32[$db + 8 >> 2] | 0;
    if ($43 >>> 0 < $45 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0);
     HEAP32[$42 >> 2] = (HEAP32[$42 >> 2] | 0) + 24;
    } else {
     $52 = HEAP32[$db >> 2] | 0;
     $53 = $43 - $52 | 0;
     $54 = ($53 | 0) / 24 | 0;
     $55 = $54 + 1 | 0;
     if (($53 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $59 = ($45 - $52 | 0) / 24 | 0;
     if ($59 >>> 0 < 1073741823) {
      $61 = $59 << 1;
      $$0$i$i$i = $61 >>> 0 < $55 >>> 0 ? $55 : $61;
     } else $$0$i$i$i = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i, $54, $db + 12 | 0);
     $64 = $__v$i$i17 + 8 | 0;
     $65 = HEAP32[$64 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($65, $0);
     HEAP32[$64 >> 2] = $65 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
    $$0 = $16 + 1 | 0;
    break L1;
    break;
   }
  case 76:
   break;
  default:
   {
    $$0 = $first;
    break L1;
   }
  }
  $69 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first + 2 | 0, $last) | 0;
  if (($69 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$69 >> 0] | 0) == 112) {
   $74 = __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($69 + 1 | 0, $last, $cv1) | 0;
   $75 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($74, $last) | 0;
   if (($75 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$75 >> 0] | 0) == 95) {
    $81 = $75 - $74 | 0;
    if ($81 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($5);
    if ($81 >>> 0 < 11) {
     HEAP8[$5 >> 0] = $81 << 1;
     $__p$0$ph$i$i7 = $5 + 1 | 0;
    } else {
     $88 = $81 + 16 & -16;
     $89 = _malloc($88) | 0;
     HEAP32[$5 + 8 >> 2] = $89;
     HEAP32[$5 >> 2] = $88 | 1;
     HEAP32[$5 + 4 >> 2] = $81;
     $__p$0$ph$i$i7 = $89;
    }
    if (($74 | 0) != ($75 | 0)) {
     $$0$i$i1027 = $74;
     $__p$0$i$i926 = $__p$0$ph$i$i7;
     while (1) {
      HEAP8[$__p$0$i$i926 >> 0] = HEAP8[$$0$i$i1027 >> 0] | 0;
      $$0$i$i1027 = $$0$i$i1027 + 1 | 0;
      if (($$0$i$i1027 | 0) == ($75 | 0)) break; else $__p$0$i$i926 = $__p$0$i$i926 + 1 | 0;
     }
    }
    HEAP8[$__p$0$ph$i$i7 + $81 >> 0] = 0;
    $98 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($5, 0, 14149) | 0;
    HEAP32[$4 >> 2] = HEAP32[$98 >> 2];
    HEAP32[$4 + 4 >> 2] = HEAP32[$98 + 4 >> 2];
    HEAP32[$4 + 8 >> 2] = HEAP32[$98 + 8 >> 2];
    HEAP32[$98 >> 2] = 0;
    HEAP32[$98 + 4 >> 2] = 0;
    HEAP32[$98 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($3, $4);
    $101 = $db + 4 | 0;
    $102 = HEAP32[$101 >> 2] | 0;
    $104 = HEAP32[$db + 8 >> 2] | 0;
    if ($102 >>> 0 < $104 >>> 0) {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($102, $3);
     HEAP32[$101 >> 2] = (HEAP32[$101 >> 2] | 0) + 24;
    } else {
     $111 = HEAP32[$db >> 2] | 0;
     $112 = $102 - $111 | 0;
     $113 = ($112 | 0) / 24 | 0;
     $114 = $113 + 1 | 0;
     if (($112 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
     $118 = ($104 - $111 | 0) / 24 | 0;
     if ($118 >>> 0 < 1073741823) {
      $120 = $118 << 1;
      $$0$i$i$i18 = $120 >>> 0 < $114 >>> 0 ? $114 : $120;
     } else $$0$i$i$i18 = 2147483647;
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i17, $$0$i$i$i18, $113, $db + 12 | 0);
     $123 = $__v$i$i17 + 8 | 0;
     $124 = HEAP32[$123 >> 2] | 0;
     __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($124, $3);
     HEAP32[$123 >> 2] = $124 + 24;
     __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i17);
     __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i17);
    }
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($3);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
    $$0 = $75 + 1 | 0;
   } else $$0 = $first;
  } else $$0 = $first;
 } else $$0 = $first; else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _icpPointRobust($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) {
 $handle = $handle | 0;
 $data = $data | 0;
 $initMatXw2Xc = $initMatXw2Xc | 0;
 $matXw2Xc = $matXw2Xc | 0;
 $err = $err | 0;
 var $$ = 0, $$0 = 0, $$lcssa = 0, $$lcssa50 = 0.0, $$pn = 0.0, $$pre = 0, $0 = 0, $1 = 0, $101 = 0, $102 = 0, $108 = 0.0, $109 = 0.0, $11 = 0, $113 = 0, $117 = 0, $121 = 0, $125 = 0, $129 = 0, $133 = 0, $137 = 0, $14 = 0, $141 = 0, $145 = 0, $149 = 0, $153 = 0, $156 = 0, $16 = 0, $17 = 0, $174 = 0, $19 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $41 = 0, $47 = 0, $51 = 0.0, $55 = 0.0, $56 = 0, $62 = 0.0, $66 = 0, $69 = 0.0, $71 = 0, $72 = 0.0, $75 = 0.0, $78 = 0.0, $8 = 0, $86 = 0.0, $99 = 0.0, $K2$0 = 0.0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$032 = 0.0, $err1$1 = 0.0, $i$1 = 0, $j$043 = 0, $j$131 = 0, $j$233 = 0, $j$338 = 0, $k$0$lcssa = 0, $k$039 = 0, $k$1 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 192 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer5 = sp + 184 | 0;
 $vararg_buffer3 = sp + 176 | 0;
 $vararg_buffer1 = sp + 168 | 0;
 $vararg_buffer = sp + 160 | 0;
 $U = sp + 48 | 0;
 $matXw2U = sp + 64 | 0;
 $dS = sp;
 $0 = $data + 8 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 do if (($1 | 0) < 4) $$0 = -1; else {
  $8 = ~~(+($1 | 0) * +HEAPF64[$handle + 128 >> 3]) + -1 | 0;
  $$ = ($8 | 0) < 3 ? 3 : $8;
  $11 = _malloc($1 * 96 | 0) | 0;
  if (!$11) {
   _arLog(3, 5109, $vararg_buffer);
   $$0 = -1;
   break;
  }
  $14 = _malloc($1 << 4) | 0;
  if (!$14) {
   _arLog(3, 5109, $vararg_buffer1);
   _free($11);
   $$0 = -1;
   break;
  }
  $16 = $1 << 3;
  $17 = _malloc($16) | 0;
  if (!$17) {
   _arLog(3, 5109, $vararg_buffer3);
   _free($11);
   _free($14);
   $$0 = -1;
   break;
  }
  $19 = _malloc($16) | 0;
  if (!$19) {
   _arLog(3, 5109, $vararg_buffer5);
   _free($11);
   _free($14);
   _free($17);
   $$0 = -1;
   break;
  } else $j$043 = 0;
  do {
   HEAPF64[$matXw2Xc + ($j$043 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) >> 3];
   HEAPF64[$matXw2Xc + ($j$043 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 8 >> 3];
   HEAPF64[$matXw2Xc + ($j$043 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 16 >> 3];
   HEAPF64[$matXw2Xc + ($j$043 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$043 << 5) + 24 >> 3];
   $j$043 = $j$043 + 1 | 0;
  } while (($j$043 | 0) != 3);
  $21 = $data + 4 | 0;
  $22 = $U + 8 | 0;
  $23 = $19 + ($$ << 3) | 0;
  $24 = $handle + 104 | 0;
  $25 = $handle + 120 | 0;
  $26 = $handle + 112 | 0;
  $27 = $handle + 96 | 0;
  $err0$0 = 0.0;
  $i$1 = 0;
  L17 : while (1) {
   _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0;
   $41 = HEAP32[$0 >> 2] | 0;
   if (($41 | 0) > 0) {
    $j$131 = 0;
    while (1) {
     if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$21 >> 2] | 0) + ($j$131 * 24 | 0) | 0) | 0) < 0) {
      label = 14;
      break L17;
     }
     $47 = HEAP32[$data >> 2] | 0;
     $51 = +HEAPF64[$47 + ($j$131 << 4) >> 3] - +HEAPF64[$U >> 3];
     $55 = +HEAPF64[$47 + ($j$131 << 4) + 8 >> 3] - +HEAPF64[$22 >> 3];
     $56 = $j$131 << 1;
     HEAPF64[$14 + ($56 << 3) >> 3] = $51;
     HEAPF64[$14 + (($56 | 1) << 3) >> 3] = $55;
     $62 = $51 * $51 + $55 * $55;
     HEAPF64[$19 + ($j$131 << 3) >> 3] = $62;
     HEAPF64[$17 + ($j$131 << 3) >> 3] = $62;
     $j$131 = $j$131 + 1 | 0;
     $66 = HEAP32[$0 >> 2] | 0;
     if (($j$131 | 0) >= ($66 | 0)) {
      $$lcssa = $66;
      break;
     }
    }
   } else $$lcssa = $41;
   _qsort($19, $$lcssa, 8, 1);
   $69 = +HEAPF64[$23 >> 3] * 4.0;
   $K2$0 = $69 < 16.0 ? 16.0 : $69;
   $71 = HEAP32[$0 >> 2] | 0;
   $72 = $K2$0 / 6.0;
   if (($71 | 0) > 0) {
    $err1$032 = 0.0;
    $j$233 = 0;
    while (1) {
     $75 = +HEAPF64[$19 + ($j$233 << 3) >> 3];
     if ($75 > $K2$0) $$pn = $72; else {
      $78 = 1.0 - $75 / $K2$0;
      $$pn = $72 * (1.0 - $78 * ($78 * $78));
     }
     $err1$1 = $err1$032 + $$pn;
     $j$233 = $j$233 + 1 | 0;
     if (($j$233 | 0) >= ($71 | 0)) {
      $err1$0$lcssa = $err1$1;
      break;
     } else $err1$032 = $err1$1;
    }
   } else $err1$0$lcssa = 0.0;
   $86 = $err1$0$lcssa / +($71 | 0);
   if ($86 < +HEAPF64[$24 >> 3]) {
    $$lcssa50 = $86;
    label = 36;
    break;
   }
   if (($i$1 | 0) > 0) if ($86 < +HEAPF64[$25 >> 3]) if ($86 / $err0$0 > +HEAPF64[$26 >> 3]) {
    $$lcssa50 = $86;
    label = 36;
    break;
   }
   if (($i$1 | 0) == (HEAP32[$27 >> 2] | 0)) {
    $$lcssa50 = $86;
    label = 36;
    break;
   }
   if (($71 | 0) > 0) {
    $174 = $71;
    $j$338 = 0;
    $k$039 = 0;
    while (1) {
     $99 = +HEAPF64[$17 + ($j$338 << 3) >> 3];
     if (!($99 <= $K2$0)) {
      $$pre = $174;
      $k$1 = $k$039;
     } else {
      $101 = $k$039 * 6 | 0;
      $102 = $11 + ($101 << 3) | 0;
      if ((_icpGetJ_U_S($102, $handle, $matXw2Xc, (HEAP32[$21 >> 2] | 0) + ($j$338 * 24 | 0) | 0) | 0) < 0) {
       label = 28;
       break L17;
      }
      $108 = 1.0 - $99 / $K2$0;
      $109 = $108 * $108;
      HEAPF64[$102 >> 3] = +HEAPF64[$102 >> 3] * $109;
      $113 = $11 + (($101 | 1) << 3) | 0;
      HEAPF64[$113 >> 3] = +HEAPF64[$113 >> 3] * $109;
      $117 = $11 + ($101 + 2 << 3) | 0;
      HEAPF64[$117 >> 3] = $109 * +HEAPF64[$117 >> 3];
      $121 = $11 + ($101 + 3 << 3) | 0;
      HEAPF64[$121 >> 3] = $109 * +HEAPF64[$121 >> 3];
      $125 = $11 + ($101 + 4 << 3) | 0;
      HEAPF64[$125 >> 3] = $109 * +HEAPF64[$125 >> 3];
      $129 = $11 + ($101 + 5 << 3) | 0;
      HEAPF64[$129 >> 3] = $109 * +HEAPF64[$129 >> 3];
      $133 = $11 + ($101 + 6 << 3) | 0;
      HEAPF64[$133 >> 3] = $109 * +HEAPF64[$133 >> 3];
      $137 = $11 + ($101 + 7 << 3) | 0;
      HEAPF64[$137 >> 3] = $109 * +HEAPF64[$137 >> 3];
      $141 = $11 + ($101 + 8 << 3) | 0;
      HEAPF64[$141 >> 3] = $109 * +HEAPF64[$141 >> 3];
      $145 = $11 + ($101 + 9 << 3) | 0;
      HEAPF64[$145 >> 3] = $109 * +HEAPF64[$145 >> 3];
      $149 = $11 + ($101 + 10 << 3) | 0;
      HEAPF64[$149 >> 3] = $109 * +HEAPF64[$149 >> 3];
      $153 = $11 + ($101 + 11 << 3) | 0;
      HEAPF64[$153 >> 3] = $109 * +HEAPF64[$153 >> 3];
      $156 = $j$338 << 1;
      HEAPF64[$14 + ($k$039 << 3) >> 3] = $109 * +HEAPF64[$14 + ($156 << 3) >> 3];
      HEAPF64[$14 + ($k$039 + 1 << 3) >> 3] = $109 * +HEAPF64[$14 + (($156 | 1) << 3) >> 3];
      $$pre = HEAP32[$0 >> 2] | 0;
      $k$1 = $k$039 + 2 | 0;
     }
     $j$338 = $j$338 + 1 | 0;
     if (($j$338 | 0) >= ($$pre | 0)) {
      $k$0$lcssa = $k$1;
      break;
     } else {
      $174 = $$pre;
      $k$039 = $k$1;
     }
    }
   } else $k$0$lcssa = 0;
   if (($k$0$lcssa | 0) < 6) {
    label = 32;
    break;
   }
   if ((_icpGetDeltaS($dS, $14, $11, $k$0$lcssa) | 0) < 0) {
    label = 34;
    break;
   }
   _icpUpdateMat($matXw2Xc, $dS) | 0;
   $err0$0 = $86;
   $i$1 = $i$1 + 1 | 0;
  }
  if ((label | 0) == 14) {
   _icpGetXw2XcCleanup295($11, $14, $17, $19);
   $$0 = -1;
   break;
  } else if ((label | 0) == 28) {
   _icpGetXw2XcCleanup295($11, $14, $17, $19);
   $$0 = -1;
   break;
  } else if ((label | 0) == 32) {
   _icpGetXw2XcCleanup295($11, $14, $17, $19);
   $$0 = -1;
   break;
  } else if ((label | 0) == 34) {
   _icpGetXw2XcCleanup295($11, $14, $17, $19);
   $$0 = -1;
   break;
  } else if ((label | 0) == 36) {
   HEAPF64[$err >> 3] = $$lcssa50;
   _free($11);
   _free($14);
   _free($17);
   _free($19);
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arParamObserv2Ideal($dist_factor, $ox, $oy, $ix, $iy, $dist_function_version) {
 $dist_factor = $dist_factor | 0;
 $ox = +$ox;
 $oy = +$oy;
 $ix = $ix | 0;
 $iy = $iy | 0;
 $dist_function_version = $dist_function_version | 0;
 var $$0 = 0, $0 = 0.0, $10 = 0.0, $101 = 0.0, $103 = 0.0, $104 = 0, $106 = 0.0, $109 = 0.0, $113 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0.0, $134 = 0.0, $14 = 0.0, $146 = 0, $154 = 0.0, $155 = 0.0, $156 = 0, $158 = 0.0, $16 = 0.0, $161 = 0.0, $165 = 0.0, $168 = 0.0, $169 = 0.0, $170 = 0.0, $171 = 0.0, $18 = 0.0, $186 = 0.0, $198 = 0, $2 = 0.0, $20 = 0.0, $206 = 0.0, $207 = 0.0, $208 = 0, $21 = 0.0, $210 = 0.0, $213 = 0.0, $216 = 0.0, $217 = 0.0, $218 = 0.0, $22 = 0.0, $227 = 0.0, $23 = 0.0, $239 = 0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $29 = 0.0, $34 = 0.0, $4 = 0.0, $44 = 0.0, $50 = 0.0, $6 = 0.0, $67 = 0.0, $8 = 0.0, $i$03 = 0, $i14$029 = 0, $i21$042 = 0, $i5$015 = 0, $px$07 = 0.0, $px$1 = 0.0, $px12$027 = 0.0, $px12$1 = 0.0, $px19$040 = 0.0, $px19$1 = 0.0, $px3$012 = 0.0, $px3$1 = 0.0, $py$06 = 0.0, $py$1 = 0.0, $py13$028 = 0.0, $py13$1 = 0.0, $py20$041 = 0.0, $py20$1 = 0.0, $py4$013 = 0.0, $py4$1 = 0.0, $x02$05 = 0.0, $y02$04 = 0.0, $z0$014 = 0.0, $z016$039 = 0.0, $z02$016 = 0.0, $z0215$038 = 0.0, $z026$025 = 0.0, $z07$026 = 0.0;
 switch ($dist_function_version | 0) {
 case 4:
  {
   $0 = +HEAPF64[$dist_factor >> 3];
   $2 = +HEAPF64[$dist_factor + 8 >> 3];
   $4 = +HEAPF64[$dist_factor + 16 >> 3];
   $6 = +HEAPF64[$dist_factor + 24 >> 3];
   $8 = +HEAPF64[$dist_factor + 32 >> 3];
   $10 = +HEAPF64[$dist_factor + 40 >> 3];
   $12 = +HEAPF64[$dist_factor + 48 >> 3];
   $14 = +HEAPF64[$dist_factor + 56 >> 3];
   $16 = +HEAPF64[$dist_factor + 64 >> 3];
   $18 = ($ox - $12) / $8;
   $20 = ($oy - $14) / $10;
   $21 = $18 * $18;
   $22 = $20 * $20;
   $23 = $4 * 2.0;
   $24 = $6 * 6.0;
   $25 = $6 * 2.0;
   $26 = $4 * 6.0;
   L3 : do if ($22 != 0.0 | $21 != 0.0) {
    $i$03 = 1;
    $px$07 = $18;
    $py$06 = $20;
    $x02$05 = $21;
    $y02$04 = $22;
    while (1) {
     $29 = $y02$04 + $x02$05;
     $34 = $0 * $29 + 1.0 + $29 * ($2 * $29);
     $44 = $x02$05 * 3.0;
     $50 = $y02$04 * $44;
     $px$07 = $px$07 - ($6 * ($29 + $x02$05 * 2.0) + ($py$06 * ($23 * $px$07) + $px$07 * $34) - $18) / ($24 * $px$07 + ($23 * $py$06 + ($0 * ($y02$04 + $44) + 1.0 + $2 * ($y02$04 * $y02$04 + ($x02$05 * ($x02$05 * 5.0) + $50)))));
     $67 = $25 * $px$07;
     $py$06 = $py$06 - ($4 * ($y02$04 * 2.0 + $29) + $py$06 * $34 + $py$06 * $67 - $20) / ($26 * $py$06 + ($0 * ($x02$05 + $y02$04 * 3.0) + 1.0 + $2 * ($y02$04 * ($y02$04 * 5.0) + ($x02$05 * $x02$05 + $50))) + $67);
     if (($i$03 | 0) == 4) {
      $px$1 = $px$07;
      $py$1 = $py$06;
      break L3;
     }
     $x02$05 = $px$07 * $px$07;
     $y02$04 = $py$06 * $py$06;
     if (!($y02$04 != 0.0 | $x02$05 != 0.0)) {
      $px$1 = 0.0;
      $py$1 = 0.0;
      break;
     } else $i$03 = $i$03 + 1 | 0;
    }
   } else {
    $px$1 = 0.0;
    $py$1 = 0.0;
   } while (0);
   HEAPF64[$ix >> 3] = $12 + $8 * $px$1 / $16;
   HEAPF64[$iy >> 3] = $14 + $10 * $py$1 / $16;
   $$0 = 0;
   break;
  }
 case 3:
  {
   $101 = +HEAPF64[$dist_factor >> 3];
   $103 = ($ox - $101) / +HEAPF64[$dist_factor + 24 >> 3];
   $104 = $dist_factor + 8 | 0;
   $106 = $oy - +HEAPF64[$104 >> 3];
   $109 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8;
   $113 = +HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5;
   $116 = $103 * $103 + $106 * $106;
   $117 = +Math_sqrt(+$116);
   $118 = $109 * 3.0;
   $119 = $113 * 5.0;
   L9 : do if ($117 != 0.0) {
    $i5$015 = 1;
    $px3$012 = $103;
    $py4$013 = $106;
    $z0$014 = $117;
    $z02$016 = $116;
    while (1) {
     $134 = $z0$014 - ($z0$014 * (1.0 - $109 * $z02$016 - $z02$016 * ($113 * $z02$016)) - $117) / (1.0 - $118 * $z02$016 - $z02$016 * ($119 * $z02$016));
     $px3$012 = $px3$012 * $134 / $z0$014;
     $py4$013 = $py4$013 * $134 / $z0$014;
     if (($i5$015 | 0) == 3) {
      $px3$1 = $px3$012;
      $py4$1 = $py4$013;
      break L9;
     }
     $z02$016 = $px3$012 * $px3$012 + $py4$013 * $py4$013;
     $z0$014 = +Math_sqrt(+$z02$016);
     if (!($z0$014 != 0.0)) {
      $px3$1 = 0.0;
      $py4$1 = 0.0;
      break;
     } else $i5$015 = $i5$015 + 1 | 0;
    }
   } else {
    $px3$1 = 0.0;
    $py4$1 = 0.0;
   } while (0);
   $146 = $dist_factor + 16 | 0;
   HEAPF64[$ix >> 3] = $px3$1 / +HEAPF64[$146 >> 3] + $101;
   HEAPF64[$iy >> 3] = $py4$1 / +HEAPF64[$146 >> 3] + +HEAPF64[$104 >> 3];
   $$0 = 0;
   break;
  }
 case 2:
  {
   $154 = +HEAPF64[$dist_factor >> 3];
   $155 = $ox - $154;
   $156 = $dist_factor + 8 | 0;
   $158 = $oy - +HEAPF64[$156 >> 3];
   $161 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8;
   $165 = +HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5;
   $168 = $155 * $155 + $158 * $158;
   $169 = +Math_sqrt(+$168);
   $170 = $161 * 3.0;
   $171 = $165 * 5.0;
   L15 : do if ($169 != 0.0) {
    $i14$029 = 1;
    $px12$027 = $155;
    $py13$028 = $158;
    $z026$025 = $168;
    $z07$026 = $169;
    while (1) {
     $186 = $z07$026 - ($z07$026 * (1.0 - $161 * $z026$025 - $z026$025 * ($165 * $z026$025)) - $169) / (1.0 - $170 * $z026$025 - $z026$025 * ($171 * $z026$025));
     $px12$027 = $px12$027 * $186 / $z07$026;
     $py13$028 = $py13$028 * $186 / $z07$026;
     if (($i14$029 | 0) == 3) {
      $px12$1 = $px12$027;
      $py13$1 = $py13$028;
      break L15;
     }
     $z026$025 = $px12$027 * $px12$027 + $py13$028 * $py13$028;
     $z07$026 = +Math_sqrt(+$z026$025);
     if (!($z07$026 != 0.0)) {
      $px12$1 = 0.0;
      $py13$1 = 0.0;
      break;
     } else $i14$029 = $i14$029 + 1 | 0;
    }
   } else {
    $px12$1 = 0.0;
    $py13$1 = 0.0;
   } while (0);
   $198 = $dist_factor + 16 | 0;
   HEAPF64[$ix >> 3] = $px12$1 / +HEAPF64[$198 >> 3] + $154;
   HEAPF64[$iy >> 3] = $py13$1 / +HEAPF64[$198 >> 3] + +HEAPF64[$156 >> 3];
   $$0 = 0;
   break;
  }
 case 1:
  {
   $206 = +HEAPF64[$dist_factor >> 3];
   $207 = $ox - $206;
   $208 = $dist_factor + 8 | 0;
   $210 = $oy - +HEAPF64[$208 >> 3];
   $213 = +HEAPF64[$dist_factor + 24 >> 3] / 1.0e8;
   $216 = $207 * $207 + $210 * $210;
   $217 = +Math_sqrt(+$216);
   $218 = $213 * 3.0;
   L21 : do if ($217 != 0.0) {
    $i21$042 = 1;
    $px19$040 = $207;
    $py20$041 = $210;
    $z016$039 = $217;
    $z0215$038 = $216;
    while (1) {
     $227 = $z016$039 - ($z016$039 * (1.0 - $213 * $z0215$038) - $217) / (1.0 - $218 * $z0215$038);
     $px19$040 = $px19$040 * $227 / $z016$039;
     $py20$041 = $py20$041 * $227 / $z016$039;
     if (($i21$042 | 0) == 3) {
      $px19$1 = $px19$040;
      $py20$1 = $py20$041;
      break L21;
     }
     $z0215$038 = $px19$040 * $px19$040 + $py20$041 * $py20$041;
     $z016$039 = +Math_sqrt(+$z0215$038);
     if (!($z016$039 != 0.0)) {
      $px19$1 = 0.0;
      $py20$1 = 0.0;
      break;
     } else $i21$042 = $i21$042 + 1 | 0;
    }
   } else {
    $px19$1 = 0.0;
    $py20$1 = 0.0;
   } while (0);
   $239 = $dist_factor + 16 | 0;
   HEAPF64[$ix >> 3] = $px19$1 / +HEAPF64[$239 >> 3] + $206;
   HEAPF64[$iy >> 3] = $py20$1 / +HEAPF64[$239 >> 3] + +HEAPF64[$208 >> 3];
   $$0 = 0;
   break;
  }
 default:
  $$0 = -1;
 }
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0$i$i$i = 0, $$0$i$i$i8 = 0, $$02 = 0, $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $103 = 0, $105 = 0, $108 = 0, $109 = 0, $13 = 0, $19 = 0, $2 = 0, $21 = 0, $26 = 0, $3 = 0, $33 = 0, $35 = 0, $40 = 0, $45 = 0, $47 = 0, $52 = 0, $56 = 0, $59 = 0, $60 = 0, $62 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $76 = 0, $78 = 0, $81 = 0, $82 = 0, $86 = 0, $87 = 0, $89 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $__v$i$i7 = 0, $c$0$in$lcssa = 0, $c$0$in29 = 0, $isdigittmp = 0, $isdigittmp427 = 0, $isdigittmp431 = 0, $n$0$lcssa = 0, $n$030 = 0, $r = 0, dest = 0, sp = 0, src = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i7 = sp + 88 | 0;
 $r = sp + 76 | 0;
 $0 = sp + 64 | 0;
 $1 = sp + 40 | 0;
 $2 = sp + 16 | 0;
 $3 = sp;
 L1 : do if (($first | 0) == ($last | 0)) $$02 = $first; else {
  $isdigittmp = (HEAP8[$first >> 0] | 0) + -48 | 0;
  if ($isdigittmp >>> 0 < 10) {
   $7 = $first + 1 | 0;
   if (($7 | 0) == ($last | 0)) $$02 = $first; else {
    $isdigittmp427 = (HEAP8[$7 >> 0] | 0) + -48 | 0;
    if ($isdigittmp427 >>> 0 < 10) {
     $c$0$in29 = $7;
     $isdigittmp431 = $isdigittmp427;
     $n$030 = $isdigittmp;
     while (1) {
      $10 = $c$0$in29 + 1 | 0;
      if (($10 | 0) == ($last | 0)) {
       $$02 = $first;
       break L1;
      }
      $13 = $isdigittmp431 + ($n$030 * 10 | 0) | 0;
      $isdigittmp431 = (HEAP8[$10 >> 0] | 0) + -48 | 0;
      if ($isdigittmp431 >>> 0 >= 10) {
       $$lcssa = $c$0$in29;
       $c$0$in$lcssa = $10;
       $n$0$lcssa = $13;
       break;
      } else {
       $c$0$in29 = $10;
       $n$030 = $13;
      }
     }
    } else {
     $$lcssa = $first;
     $c$0$in$lcssa = $7;
     $n$0$lcssa = $isdigittmp;
    }
    if (($last - $c$0$in$lcssa | 0) >>> 0 < $n$0$lcssa >>> 0) $$02 = $first; else {
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($r, $c$0$in$lcssa, $n$0$lcssa);
     $19 = HEAP8[$r >> 0] | 0;
     $21 = ($19 & 1) == 0;
     $26 = $21 ? ($19 & 255) >>> 1 : HEAP32[$r + 4 >> 2] | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($0, $21 ? $r + 1 | 0 : HEAP32[$r + 8 >> 2] | 0, $26 >>> 0 < 10 ? $26 : 10);
     $33 = HEAP8[$0 >> 0] | 0;
     $35 = ($33 & 1) == 0;
     $40 = $35 ? ($33 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0;
     $45 = $40 >>> 0 > 10;
     $47 = _memcmp($35 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, 13728, $45 ? 10 : $40) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
     if (!((($47 | 0) == 0 ? ($40 >>> 0 < 10 ? -1 : $45 & 1) : $47) | 0)) {
      $52 = _malloc(32) | 0;
      HEAP32[$1 + 8 >> 2] = $52;
      HEAP32[$1 >> 2] = 33;
      HEAP32[$1 + 4 >> 2] = 21;
      dest = $52;
      src = 13739;
      stop = dest + 21 | 0;
      do {
       HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
       dest = dest + 1 | 0;
       src = src + 1 | 0;
      } while ((dest | 0) < (stop | 0));
      HEAP8[$52 + 21 >> 0] = 0;
      $56 = $1 + 12 | 0;
      HEAP32[$56 >> 2] = 0;
      HEAP32[$56 + 4 >> 2] = 0;
      HEAP32[$56 + 8 >> 2] = 0;
      $59 = $db + 4 | 0;
      $60 = HEAP32[$59 >> 2] | 0;
      $62 = HEAP32[$db + 8 >> 2] | 0;
      if ($60 >>> 0 < $62 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($60, $1);
       HEAP32[$59 >> 2] = (HEAP32[$59 >> 2] | 0) + 24;
      } else {
       $69 = HEAP32[$db >> 2] | 0;
       $70 = $60 - $69 | 0;
       $71 = ($70 | 0) / 24 | 0;
       $72 = $71 + 1 | 0;
       if (($70 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $76 = ($62 - $69 | 0) / 24 | 0;
       if ($76 >>> 0 < 1073741823) {
        $78 = $76 << 1;
        $$0$i$i$i = $78 >>> 0 < $72 >>> 0 ? $72 : $78;
       } else $$0$i$i$i = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i, $71, $db + 12 | 0);
       $81 = $__v$i$i7 + 8 | 0;
       $82 = HEAP32[$81 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($82, $1);
       HEAP32[$81 >> 2] = $82 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($1);
     } else {
      HEAP32[$3 >> 2] = HEAP32[$r >> 2];
      HEAP32[$3 + 4 >> 2] = HEAP32[$r + 4 >> 2];
      HEAP32[$3 + 8 >> 2] = HEAP32[$r + 8 >> 2];
      HEAP32[$r >> 2] = 0;
      HEAP32[$r + 4 >> 2] = 0;
      HEAP32[$r + 8 >> 2] = 0;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($2, $3);
      $86 = $db + 4 | 0;
      $87 = HEAP32[$86 >> 2] | 0;
      $89 = HEAP32[$db + 8 >> 2] | 0;
      if ($87 >>> 0 < $89 >>> 0) {
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($87, $2);
       HEAP32[$86 >> 2] = (HEAP32[$86 >> 2] | 0) + 24;
      } else {
       $96 = HEAP32[$db >> 2] | 0;
       $97 = $87 - $96 | 0;
       $98 = ($97 | 0) / 24 | 0;
       $99 = $98 + 1 | 0;
       if (($97 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
       $103 = ($89 - $96 | 0) / 24 | 0;
       if ($103 >>> 0 < 1073741823) {
        $105 = $103 << 1;
        $$0$i$i$i8 = $105 >>> 0 < $99 >>> 0 ? $99 : $105;
       } else $$0$i$i$i8 = 2147483647;
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i7, $$0$i$i$i8, $98, $db + 12 | 0);
       $108 = $__v$i$i7 + 8 | 0;
       $109 = HEAP32[$108 >> 2] | 0;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($109, $2);
       HEAP32[$108 >> 2] = $109 + 24;
       __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i7);
       __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i7);
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($2);
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
     }
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($r);
     $$02 = $$lcssa + ($n$0$lcssa + 1) | 0;
    }
   }
  } else $$02 = $first;
 } while (0);
 STACKTOP = sp;
 return $$02 | 0;
}

function _arPattLoadFromBuffer($pattHandle, $buffer) {
 $pattHandle = $pattHandle | 0;
 $buffer = $buffer | 0;
 var $$0 = 0, $$lcssa = 0, $$lcssa36 = 0, $$pre = 0, $$pre17 = 0, $$pre18 = 0, $$pre19 = 0, $10 = 0, $101 = 0.0, $105 = 0, $13 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $27 = 0, $29 = 0, $30 = 0, $31 = 0, $36 = 0, $4 = 0, $43 = 0, $46 = 0, $47 = 0, $53 = 0, $56 = 0, $6 = 0, $63 = 0, $66 = 0, $72 = 0, $73 = 0, $75 = 0, $77 = 0, $83 = 0.0, $91 = 0, $92 = 0, $94 = 0, $96 = 0, $buffPtr$064 = 0, $buffPtr$151 = 0, $buffPtr$2$lcssa = 0, $buffPtr$2$lcssa$lcssa = 0, $buffPtr$245 = 0, $buffPtr$3$lcssa = 0, $buffPtr$339 = 0, $h$063 = 0, $i$0$lcssa = 0, $i$065 = 0, $i$152 = 0, $i$258 = 0, $i1$037 = 0, $i2$042 = 0, $i3$048 = 0, $l$050 = 0, $l$1$lcssa = 0, $l$1$lcssa$lcssa = 0, $l$144 = 0, $l$2$lcssa = 0, $l$238 = 0, $m$0$lcssa = 0, $m$053 = 0, $m$1$lcssa = 0, $m$159 = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer5 = sp + 24 | 0;
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer1 = sp + 8 | 0;
 do if (!$pattHandle) {
  _arLog(3, 4649, sp);
  $$0 = -1;
 } else {
  if (!$buffer) {
   _arLog(3, 4674, $vararg_buffer1);
   $$0 = -1;
   break;
  }
  $2 = $pattHandle + 8 | 0;
  $4 = HEAP32[$pattHandle + 4 >> 2] | 0;
  L7 : do if (($4 | 0) > 0) {
   $6 = HEAP32[$2 >> 2] | 0;
   $i$065 = 0;
   while (1) {
    if (!(HEAP32[$6 + ($i$065 << 2) >> 2] | 0)) {
     $i$0$lcssa = $i$065;
     break L7;
    }
    $10 = $i$065 + 1 | 0;
    if (($10 | 0) < ($4 | 0)) $i$065 = $10; else {
     $i$0$lcssa = $10;
     break;
    }
   }
  } else $i$0$lcssa = 0; while (0);
  if (($i$0$lcssa | 0) == ($4 | 0)) $$0 = -1; else {
   $13 = ___strdup($buffer) | 0;
   if (!$13) {
    _arLog(3, 4719, $vararg_buffer3);
    $$0 = -1;
    break;
   }
   $16 = $pattHandle + 28 | 0;
   $17 = $i$0$lcssa << 2;
   $18 = $pattHandle + 12 | 0;
   $19 = $pattHandle + 20 | 0;
   $20 = $pattHandle + 16 | 0;
   $21 = $pattHandle + 24 | 0;
   $buffPtr$064 = _strtok($13, 4742) | 0;
   $h$063 = 0;
   L17 : while (1) {
    $22 = $h$063 + $17 | 0;
    $buffPtr$151 = $buffPtr$064;
    $i3$048 = 0;
    $l$050 = 0;
    while (1) {
     $23 = ($i3$048 | 0) == 0;
     $24 = ($i3$048 | 0) == 2;
     $$pre18 = HEAP32[$16 >> 2] | 0;
     if (($$pre18 | 0) > 0) {
      $27 = $$pre18;
      $buffPtr$245 = $buffPtr$151;
      $i2$042 = 0;
      $l$144 = $l$050;
      while (1) {
       if (($27 | 0) > 0) {
        $buffPtr$339 = $buffPtr$245;
        $i1$037 = 0;
        $l$238 = $l$144;
        while (1) {
         if (!$buffPtr$339) {
          label = 17;
          break L17;
         }
         $29 = _atoi($buffPtr$339) | 0;
         $30 = _strtok(0, 4742) | 0;
         $31 = 255 - $29 | 0;
         $36 = (((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0) * 3 | 0) + $i3$048 | 0;
         HEAP32[(HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0) + ($36 << 2) >> 2] = $31;
         $43 = (Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 | 0;
         $46 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0;
         $47 = $46 + ($43 << 2) | 0;
         if ($23) HEAP32[$47 >> 2] = $31; else {
          HEAP32[$47 >> 2] = (HEAP32[$47 >> 2] | 0) + $31;
          if ($24) {
           $53 = $46 + ((Math_imul(HEAP32[$16 >> 2] | 0, $i2$042) | 0) + $i1$037 << 2) | 0;
           HEAP32[$53 >> 2] = (HEAP32[$53 >> 2] | 0) / 3 | 0;
          }
         }
         $56 = $31 + $l$238 | 0;
         $i1$037 = $i1$037 + 1 | 0;
         $$pre19 = HEAP32[$16 >> 2] | 0;
         if (($i1$037 | 0) >= ($$pre19 | 0)) {
          $$lcssa = $$pre19;
          $buffPtr$3$lcssa = $30;
          $l$2$lcssa = $56;
          break;
         } else {
          $buffPtr$339 = $30;
          $l$238 = $56;
         }
        }
       } else {
        $$lcssa = $27;
        $buffPtr$3$lcssa = $buffPtr$245;
        $l$2$lcssa = $l$144;
       }
       $i2$042 = $i2$042 + 1 | 0;
       if (($i2$042 | 0) >= ($$lcssa | 0)) {
        $buffPtr$2$lcssa = $buffPtr$3$lcssa;
        $l$1$lcssa = $l$2$lcssa;
        break;
       } else {
        $27 = $$lcssa;
        $buffPtr$245 = $buffPtr$3$lcssa;
        $l$144 = $l$2$lcssa;
       }
      }
     } else {
      $buffPtr$2$lcssa = $buffPtr$151;
      $l$1$lcssa = $l$050;
     }
     $i3$048 = $i3$048 + 1 | 0;
     if (($i3$048 | 0) >= 3) {
      $buffPtr$2$lcssa$lcssa = $buffPtr$2$lcssa;
      $l$1$lcssa$lcssa = $l$1$lcssa;
      break;
     } else {
      $buffPtr$151 = $buffPtr$2$lcssa;
      $l$050 = $l$1$lcssa;
     }
    }
    $63 = HEAP32[$16 >> 2] | 0;
    $66 = ($l$1$lcssa$lcssa | 0) / (Math_imul($63 * 3 | 0, $63) | 0) | 0;
    if ((Math_imul($63 * 3 | 0, $63) | 0) > 0) {
     $72 = HEAP32[(HEAP32[$18 >> 2] | 0) + ($22 << 2) >> 2] | 0;
     $i$152 = 0;
     $m$053 = 0;
     while (1) {
      $73 = $72 + ($i$152 << 2) | 0;
      $75 = (HEAP32[$73 >> 2] | 0) - $66 | 0;
      HEAP32[$73 >> 2] = $75;
      $77 = (Math_imul($75, $75) | 0) + $m$053 | 0;
      $i$152 = $i$152 + 1 | 0;
      $$pre = HEAP32[$16 >> 2] | 0;
      if (($i$152 | 0) >= (Math_imul($$pre * 3 | 0, $$pre) | 0)) {
       $$lcssa36 = $$pre;
       $m$0$lcssa = $77;
       break;
      } else $m$053 = $77;
     }
    } else {
     $$lcssa36 = $63;
     $m$0$lcssa = 0;
    }
    $83 = +Math_sqrt(+(+($m$0$lcssa | 0)));
    HEAPF64[(HEAP32[$20 >> 2] | 0) + ($22 << 3) >> 3] = $83 == 0.0 ? 1.0e-07 : $83;
    if (!(Math_imul($$lcssa36, $$lcssa36) | 0)) $m$1$lcssa = 0; else {
     $91 = HEAP32[(HEAP32[$19 >> 2] | 0) + ($22 << 2) >> 2] | 0;
     $i$258 = 0;
     $m$159 = 0;
     while (1) {
      $92 = $91 + ($i$258 << 2) | 0;
      $94 = (HEAP32[$92 >> 2] | 0) - $66 | 0;
      HEAP32[$92 >> 2] = $94;
      $96 = (Math_imul($94, $94) | 0) + $m$159 | 0;
      $i$258 = $i$258 + 1 | 0;
      $$pre17 = HEAP32[$16 >> 2] | 0;
      if (($i$258 | 0) >= (Math_imul($$pre17, $$pre17) | 0)) {
       $m$1$lcssa = $96;
       break;
      } else $m$159 = $96;
     }
    }
    $101 = +Math_sqrt(+(+($m$1$lcssa | 0)));
    HEAPF64[(HEAP32[$21 >> 2] | 0) + ($22 << 3) >> 3] = $101 == 0.0 ? 1.0e-07 : $101;
    $105 = $h$063 + 1 | 0;
    if (($105 | 0) < 4) {
     $buffPtr$064 = $buffPtr$2$lcssa$lcssa;
     $h$063 = $105;
    } else {
     label = 32;
     break;
    }
   }
   if ((label | 0) == 17) {
    _arLog(3, 4747, $vararg_buffer5);
    _free($13);
    $$0 = -1;
    break;
   } else if ((label | 0) == 32) {
    _free($13);
    HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$0$lcssa << 2) >> 2] = 1;
    HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + 1;
    $$0 = $i$0$lcssa;
    break;
   }
  }
 } while (0);
 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$i30 = 0, $$02$i$i = 0, $$02$i3$i = 0, $$lcssa = 0, $$lcssa57 = 0, $$phi$trans$insert$i = 0, $$pre1$i = 0, $$pre1$i6 = 0, $$pre1$i9 = 0, $$sum = 0, $0 = 0, $1 = 0, $10 = 0, $111 = 0, $14 = 0, $15 = 0, $17 = 0, $19 = 0, $23 = 0, $26 = 0, $36 = 0, $39 = 0, $41 = 0, $44 = 0, $46 = 0, $48 = 0, $49 = 0, $51 = 0, $53 = 0, $58 = 0, $59 = 0, $63 = 0, $68 = 0, $72 = 0, $79 = 0, $8 = 0, $8$phi = 0, $81 = 0, $82 = 0, $84 = 0, $87 = 0, $9 = 0, $91 = 0, $93 = 0, $94 = 0, $95 = 0, $head$0$lcssa = 0, $head$036 = 0, $head$1$be = 0, $head$153 = 0, $i$0 = 0, $lp = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, $p = 0, $pshift$0$lcssa = 0, $pshift$037 = 0, $pshift$1 = 0, $pshift$2$be = 0, $pshift$254 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 208 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $lp = sp + 8 | 0;
 $p = sp;
 $0 = Math_imul($width, $nel) | 0;
 $1 = $p;
 HEAP32[$1 >> 2] = 1;
 HEAP32[$1 + 4 >> 2] = 0;
 if ($0) {
  $$sum = $0 - $width | 0;
  HEAP32[$lp + 4 >> 2] = $width;
  HEAP32[$lp >> 2] = $width;
  $10 = $width;
  $8 = $width;
  $i$0 = 2;
  while (1) {
   $9 = $8 + $width + $10 | 0;
   HEAP32[$lp + ($i$0 << 2) >> 2] = $9;
   if ($9 >>> 0 < $0 >>> 0) {
    $8$phi = $10;
    $10 = $9;
    $i$0 = $i$0 + 1 | 0;
    $8 = $8$phi;
   } else break;
  }
  $14 = 0 - $width | 0;
  $15 = $base + $$sum | 0;
  $$phi$trans$insert$i = $p + 4 | 0;
  if (($$sum | 0) > 0) {
   $17 = $15;
   $19 = 1;
   $head$036 = $base;
   $pshift$037 = 1;
   while (1) {
    do if (($19 & 3 | 0) == 3) {
     _sift($head$036, $width, $cmp, $pshift$037, $lp);
     $$pre1$i = HEAP32[$$phi$trans$insert$i >> 2] | 0;
     $23 = $$pre1$i << 30 | (HEAP32[$p >> 2] | 0) >>> 2;
     HEAP32[$p >> 2] = $23;
     HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i >>> 2;
     $48 = $23;
     $pshift$1 = $pshift$037 + 2 | 0;
    } else {
     $26 = $pshift$037 + -1 | 0;
     if ((HEAP32[$lp + ($26 << 2) >> 2] | 0) >>> 0 < ($17 - $head$036 | 0) >>> 0) _sift($head$036, $width, $cmp, $pshift$037, $lp); else _trinkle($head$036, $width, $cmp, $p, $pshift$037, 0, $lp);
     if (($pshift$037 | 0) == 1) {
      $$pre1$i6 = HEAP32[$p >> 2] | 0;
      HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i6 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1;
      $36 = $$pre1$i6 << 1;
      HEAP32[$p >> 2] = $36;
      $48 = $36;
      $pshift$1 = 0;
      break;
     }
     if ($26 >>> 0 > 31) {
      $39 = HEAP32[$p >> 2] | 0;
      HEAP32[$$phi$trans$insert$i >> 2] = $39;
      HEAP32[$p >> 2] = 0;
      $$0$i = $pshift$037 + -33 | 0;
      $41 = $39;
      $44 = 0;
     } else {
      $$0$i = $26;
      $41 = HEAP32[$$phi$trans$insert$i >> 2] | 0;
      $44 = HEAP32[$p >> 2] | 0;
     }
     HEAP32[$$phi$trans$insert$i >> 2] = $44 >>> (32 - $$0$i | 0) | $41 << $$0$i;
     $46 = $44 << $$0$i;
     HEAP32[$p >> 2] = $46;
     $48 = $46;
     $pshift$1 = 1;
    } while (0);
    $19 = $48 | 1;
    HEAP32[$p >> 2] = $19;
    $49 = $head$036 + $width | 0;
    if ($49 >>> 0 >= $15 >>> 0) {
     $head$0$lcssa = $49;
     $pshift$0$lcssa = $pshift$1;
     break;
    } else {
     $head$036 = $49;
     $pshift$037 = $pshift$1;
    }
   }
  } else {
   $head$0$lcssa = $base;
   $pshift$0$lcssa = 1;
  }
  _trinkle($head$0$lcssa, $width, $cmp, $p, $pshift$0$lcssa, 0, $lp);
  $51 = $p + 4 | 0;
  $53 = HEAP32[$p >> 2] | 0;
  if (!(($pshift$0$lcssa | 0) == 1 & ($53 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0)) {
   $59 = $53;
   $head$153 = $head$0$lcssa;
   $pshift$254 = $pshift$0$lcssa;
   while (1) {
    if (($pshift$254 | 0) < 2) {
     $58 = $59 + -1 | 0;
     do if (!$58) {
      $81 = 32;
      label = 30;
     } else {
      if (!($58 & 1)) {
       $$02$i$i = $58;
       $nTrailingZeros$03$i$i = 0;
       while (1) {
        $63 = $nTrailingZeros$03$i$i + 1 | 0;
        $$02$i$i = $$02$i$i >>> 1;
        if ($$02$i$i & 1) {
         $$lcssa = $63;
         break;
        } else $nTrailingZeros$03$i$i = $63;
       }
       if (!$$lcssa) label = 24; else $79 = $$lcssa;
      } else label = 24;
      if ((label | 0) == 24) {
       label = 0;
       $68 = HEAP32[$$phi$trans$insert$i >> 2] | 0;
       if (!$68) {
        $81 = 64;
        label = 30;
        break;
       }
       if (!($68 & 1)) {
        $$02$i3$i = $68;
        $nTrailingZeros$03$i2$i = 0;
       } else {
        $$0$i30 = 0;
        $84 = $59;
        $87 = $68;
        $91 = 0;
        break;
       }
       while (1) {
        $72 = $nTrailingZeros$03$i2$i + 1 | 0;
        $$02$i3$i = $$02$i3$i >>> 1;
        if ($$02$i3$i & 1) {
         $$lcssa57 = $72;
         $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i;
         break;
        } else $nTrailingZeros$03$i2$i = $72;
       }
       if (!$$lcssa57) {
        $$0$i30 = 0;
        $84 = $59;
        $87 = $68;
        $91 = 0;
        break;
       } else $79 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0;
      }
      if ($79 >>> 0 > 31) {
       $81 = $79;
       label = 30;
      } else {
       $$0$i30 = $79;
       $84 = $59;
       $87 = HEAP32[$$phi$trans$insert$i >> 2] | 0;
       $91 = $79;
      }
     } while (0);
     if ((label | 0) == 30) {
      label = 0;
      $82 = HEAP32[$$phi$trans$insert$i >> 2] | 0;
      HEAP32[$p >> 2] = $82;
      HEAP32[$$phi$trans$insert$i >> 2] = 0;
      $$0$i30 = $81 + -32 | 0;
      $84 = $82;
      $87 = 0;
      $91 = $81;
     }
     HEAP32[$p >> 2] = $87 << 32 - $$0$i30 | $84 >>> $$0$i30;
     HEAP32[$$phi$trans$insert$i >> 2] = $87 >>> $$0$i30;
     $head$1$be = $head$153 + $14 | 0;
     $pshift$2$be = $91 + $pshift$254 | 0;
    } else {
     $93 = $59 >>> 30;
     $94 = $93 | HEAP32[$$phi$trans$insert$i >> 2] << 2;
     $95 = $pshift$254 + -2 | 0;
     HEAP32[$p >> 2] = ($59 << 1 & 2147483646 | $93 << 31) ^ 3;
     HEAP32[$$phi$trans$insert$i >> 2] = $94 >>> 1;
     _trinkle($head$153 + (0 - ((HEAP32[$lp + ($95 << 2) >> 2] | 0) + $width)) | 0, $width, $cmp, $p, $pshift$254 + -1 | 0, 1, $lp);
     $$pre1$i9 = HEAP32[$p >> 2] | 0;
     HEAP32[$$phi$trans$insert$i >> 2] = $$pre1$i9 >>> 31 | HEAP32[$$phi$trans$insert$i >> 2] << 1;
     HEAP32[$p >> 2] = $$pre1$i9 << 1 | 1;
     $111 = $head$153 + $14 | 0;
     _trinkle($111, $width, $cmp, $p, $95, 1, $lp);
     $head$1$be = $111;
     $pshift$2$be = $95;
    }
    $59 = HEAP32[$p >> 2] | 0;
    if (($pshift$2$be | 0) == 1 & ($59 | 0) == 1 & (HEAP32[$51 >> 2] | 0) == 0) break; else {
     $head$153 = $head$1$be;
     $pshift$254 = $pshift$2$be;
    }
   }
  }
 }
 STACKTOP = sp;
 return;
}

function _arImageProcLuma($ipi, $dataPtr) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 var $$0 = 0, $1 = 0, $104 = 0, $105 = 0, $110 = 0, $111 = 0, $116 = 0, $117 = 0, $122 = 0, $123 = 0, $128 = 0, $129 = 0, $13 = 0, $14 = 0, $157 = 0, $164 = 0, $185 = 0, $192 = 0, $213 = 0, $44 = 0, $45 = 0, $75 = 0, $76 = 0, $p$040 = 0, $p$142 = 0, $p$245 = 0, $p$348 = 0, $p$451 = 0, $p$554 = 0, $p$657 = 0, $p$760 = 0, $q$041 = 0, $q$143 = 0, $q$246 = 0, $q$349 = 0, $q$452 = 0, $q$555 = 0, $q$658 = 0, $q$761 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $1 = HEAP32[$ipi + 2068 >> 2] | 0;
 L1 : do switch ($1 | 0) {
 case 5:
 case 12:
 case 13:
 case 14:
  {
   if (!(HEAP32[$ipi + 2072 >> 2] | 0)) {
    HEAP32[$ipi >> 2] = $dataPtr;
    $$0 = 0;
    break L1;
   } else {
    _memcpy(HEAP32[$ipi >> 2] | 0, $dataPtr | 0, Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) | 0;
    $$0 = 0;
    break L1;
   }
   break;
  }
 default:
  {
   if (($1 & -2 | 0) == 2) {
    $13 = $ipi + 8 | 0;
    $14 = $ipi + 12 | 0;
    if (!(Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0)) {
     $$0 = 0;
     break L1;
    } else {
     $p$040 = 0;
     $q$041 = 0;
    }
    while (1) {
     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$040 >> 0] = (((HEAPU8[$dataPtr + ($q$041 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$041 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$041 | 2) >> 0] | 0) | 0) >>> 0) / 3 | 0;
     $p$040 = $p$040 + 1 | 0;
     if ($p$040 >>> 0 >= (Math_imul(HEAP32[$14 >> 2] | 0, HEAP32[$13 >> 2] | 0) | 0) >>> 0) {
      $$0 = 0;
      break L1;
     } else $q$041 = $q$041 + 4 | 0;
    }
   }
   if (($1 & -3 | 0) == 4) {
    $44 = $ipi + 8 | 0;
    $45 = $ipi + 12 | 0;
    if (!(Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0)) {
     $$0 = 0;
     break L1;
    } else {
     $p$142 = 0;
     $q$143 = 0;
    }
    while (1) {
     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$142 >> 0] = (((HEAPU8[$dataPtr + ($q$143 | 2) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 1) >> 0] | 0) + (HEAPU8[$dataPtr + ($q$143 | 3) >> 0] | 0) | 0) >>> 0) / 3 | 0;
     $p$142 = $p$142 + 1 | 0;
     if ($p$142 >>> 0 >= (Math_imul(HEAP32[$45 >> 2] | 0, HEAP32[$44 >> 2] | 0) | 0) >>> 0) {
      $$0 = 0;
      break L1;
     } else $q$143 = $q$143 + 4 | 0;
    }
   }
   if ($1 >>> 0 < 2) {
    $75 = $ipi + 8 | 0;
    $76 = $ipi + 12 | 0;
    if (!(Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0)) {
     $$0 = 0;
     break L1;
    } else {
     $p$245 = 0;
     $q$246 = 0;
    }
    while (1) {
     HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$245 >> 0] = (((HEAPU8[$dataPtr + ($q$246 + 1) >> 0] | 0) + (HEAPU8[$dataPtr + $q$246 >> 0] | 0) + (HEAPU8[$dataPtr + ($q$246 + 2) >> 0] | 0) | 0) >>> 0) / 3 | 0;
     $p$245 = $p$245 + 1 | 0;
     if ($p$245 >>> 0 >= (Math_imul(HEAP32[$76 >> 2] | 0, HEAP32[$75 >> 2] | 0) | 0) >>> 0) {
      $$0 = 0;
      break L1;
     } else $q$246 = $q$246 + 3 | 0;
    }
   }
   switch ($1 | 0) {
   case 8:
    {
     $128 = $ipi + 8 | 0;
     $129 = $ipi + 12 | 0;
     if (!(Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0)) {
      $$0 = 0;
      break L1;
     } else {
      $p$348 = 0;
      $q$349 = 0;
     }
     while (1) {
      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$348 >> 0] = HEAP8[$dataPtr + $q$349 >> 0] | 0;
      $p$348 = $p$348 + 1 | 0;
      if ($p$348 >>> 0 >= (Math_imul(HEAP32[$129 >> 2] | 0, HEAP32[$128 >> 2] | 0) | 0) >>> 0) {
       $$0 = 0;
       break;
      } else $q$349 = $q$349 + 2 | 0;
     }
     break;
    }
   case 7:
    {
     $122 = $ipi + 8 | 0;
     $123 = $ipi + 12 | 0;
     if (!(Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0)) {
      $$0 = 0;
      break L1;
     } else {
      $p$451 = 0;
      $q$452 = 0;
     }
     while (1) {
      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$451 >> 0] = HEAP8[$dataPtr + ($q$452 | 1) >> 0] | 0;
      $p$451 = $p$451 + 1 | 0;
      if ($p$451 >>> 0 >= (Math_imul(HEAP32[$123 >> 2] | 0, HEAP32[$122 >> 2] | 0) | 0) >>> 0) {
       $$0 = 0;
       break;
      } else $q$452 = $q$452 + 2 | 0;
     }
     break;
    }
   case 9:
    {
     $116 = $ipi + 8 | 0;
     $117 = $ipi + 12 | 0;
     if (!(Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0)) {
      $$0 = 0;
      break L1;
     } else {
      $p$554 = 0;
      $q$555 = 0;
     }
     while (1) {
      $157 = HEAPU8[$dataPtr + $q$555 >> 0] | 0;
      $164 = HEAPU8[$dataPtr + ($q$555 | 1) >> 0] | 0;
      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$554 >> 0] = ((($157 & 248) + 10 + ($157 << 5 & 224) + ($164 >>> 3 & 28) + ($164 << 3 & 248) | 0) >>> 0) / 3 | 0;
      $p$554 = $p$554 + 1 | 0;
      if ($p$554 >>> 0 >= (Math_imul(HEAP32[$117 >> 2] | 0, HEAP32[$116 >> 2] | 0) | 0) >>> 0) {
       $$0 = 0;
       break;
      } else $q$555 = $q$555 + 2 | 0;
     }
     break;
    }
   case 10:
    {
     $110 = $ipi + 8 | 0;
     $111 = $ipi + 12 | 0;
     if (!(Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0)) {
      $$0 = 0;
      break L1;
     } else {
      $p$657 = 0;
      $q$658 = 0;
     }
     while (1) {
      $185 = HEAPU8[$dataPtr + $q$658 >> 0] | 0;
      $192 = HEAPU8[$dataPtr + ($q$658 | 1) >> 0] | 0;
      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$657 >> 0] = ((($185 & 248) + 12 + ($185 << 5 & 224) + ($192 >>> 3 & 24) + ($192 << 2 & 248) | 0) >>> 0) / 3 | 0;
      $p$657 = $p$657 + 1 | 0;
      if ($p$657 >>> 0 >= (Math_imul(HEAP32[$111 >> 2] | 0, HEAP32[$110 >> 2] | 0) | 0) >>> 0) {
       $$0 = 0;
       break;
      } else $q$658 = $q$658 + 2 | 0;
     }
     break;
    }
   case 11:
    {
     $104 = $ipi + 8 | 0;
     $105 = $ipi + 12 | 0;
     if (!(Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0)) {
      $$0 = 0;
      break L1;
     } else {
      $p$760 = 0;
      $q$761 = 0;
     }
     while (1) {
      $213 = HEAPU8[$dataPtr + $q$761 >> 0] | 0;
      HEAP8[(HEAP32[$ipi >> 2] | 0) + $p$760 >> 0] = ((($213 & 240) + 24 + ($213 << 4 & 240) + ((HEAPU8[$dataPtr + ($q$761 | 1) >> 0] | 0) & 240) | 0) >>> 0) / 3 | 0;
      $p$760 = $p$760 + 1 | 0;
      if ($p$760 >>> 0 >= (Math_imul(HEAP32[$105 >> 2] | 0, HEAP32[$104 >> 2] | 0) | 0) >>> 0) {
       $$0 = 0;
       break;
      } else $q$761 = $q$761 + 2 | 0;
     }
     break;
    }
   default:
    {
     _arLog(3, 4361, $vararg_buffer);
     $$0 = -1;
     break L1;
    }
   }
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_123parse_binary_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $op = $op | 0;
 $db = $db | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $101 = 0, $103 = 0, $107 = 0, $11 = 0, $110 = 0, $112 = 0, $117 = 0, $118 = 0, $119 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $25 = 0, $26 = 0, $3 = 0, $34 = 0, $36 = 0, $37 = 0, $4 = 0, $41 = 0, $42 = 0, $44 = 0, $46 = 0, $48 = 0, $5 = 0, $53 = 0, $56 = 0, $58 = 0, $6 = 0, $65 = 0, $68 = 0, $71 = 0, $73 = 0, $8 = 0, $83 = 0, $86 = 0, $89 = 0, $91 = 0, $op1 = 0, $op2 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $op2 = sp + 84 | 0;
 $op1 = sp + 72 | 0;
 $0 = sp + 60 | 0;
 $1 = sp + 48 | 0;
 $2 = sp + 36 | 0;
 $3 = sp + 24 | 0;
 $4 = sp + 12 | 0;
 $5 = sp;
 $6 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
 L1 : do if (($6 | 0) == ($first | 0)) $$0 = $first; else {
  $8 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($6, $last, $db) | 0;
  $10 = $db + 4 | 0;
  $11 = HEAP32[$10 >> 2] | 0;
  if (($8 | 0) == ($6 | 0)) {
   $117 = $11 + -24 | 0;
   $119 = $11;
   while (1) {
    $118 = $119 + -24 | 0;
    HEAP32[$10 >> 2] = $118;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($118);
    $119 = HEAP32[$10 >> 2] | 0;
    if (($119 | 0) == ($117 | 0)) {
     $$0 = $first;
     break L1;
    }
   }
  }
  if ((($11 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else {
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op2, $11 + -24 | 0);
   $19 = HEAP32[$10 >> 2] | 0;
   $20 = $19 + -24 | 0;
   $22 = $19;
   do {
    $21 = $22 + -24 | 0;
    HEAP32[$10 >> 2] = $21;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($21);
    $22 = HEAP32[$10 >> 2] | 0;
   } while (($22 | 0) != ($20 | 0));
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($op1, $19 + -48 | 0);
   $25 = HEAP32[$10 >> 2] | 0;
   $26 = $25 + -24 | 0;
   if (!(HEAP8[$26 >> 0] & 1)) {
    HEAP8[$26 + 1 >> 0] = 0;
    HEAP8[$26 >> 0] = 0;
   } else {
    HEAP8[HEAP32[$25 + -16 >> 2] >> 0] = 0;
    HEAP32[$25 + -20 >> 2] = 0;
   }
   $34 = HEAP8[$op >> 0] | 0;
   $36 = ($34 & 1) == 0;
   $37 = $op + 4 | 0;
   $41 = $36 ? ($34 & 255) >>> 1 : HEAP32[$37 >> 2] | 0;
   $42 = $op + 8 | 0;
   $44 = $op + 1 | 0;
   $46 = $41 >>> 0 > 1;
   $48 = _memcmp($36 ? $44 : HEAP32[$42 >> 2] | 0, 12778, $46 ? 1 : $41) | 0;
   if (!((($48 | 0) == 0 ? (($41 | 0) == 0 ? -1 : $46 & 1) : $48) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 40);
   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($5, 12714, $op1);
   $53 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($5, 14007) | 0;
   HEAP32[$4 >> 2] = HEAP32[$53 >> 2];
   HEAP32[$4 + 4 >> 2] = HEAP32[$53 + 4 >> 2];
   HEAP32[$4 + 8 >> 2] = HEAP32[$53 + 8 >> 2];
   HEAP32[$53 >> 2] = 0;
   HEAP32[$53 + 4 >> 2] = 0;
   HEAP32[$53 + 8 >> 2] = 0;
   $56 = HEAP8[$op >> 0] | 0;
   $58 = ($56 & 1) == 0;
   $65 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($4, $58 ? $44 : HEAP32[$42 >> 2] | 0, $58 ? ($56 & 255) >>> 1 : HEAP32[$37 >> 2] | 0) | 0;
   HEAP32[$3 >> 2] = HEAP32[$65 >> 2];
   HEAP32[$3 + 4 >> 2] = HEAP32[$65 + 4 >> 2];
   HEAP32[$3 + 8 >> 2] = HEAP32[$65 + 8 >> 2];
   HEAP32[$65 >> 2] = 0;
   HEAP32[$65 + 4 >> 2] = 0;
   HEAP32[$65 + 8 >> 2] = 0;
   $68 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($3, 12616) | 0;
   HEAP32[$2 >> 2] = HEAP32[$68 >> 2];
   HEAP32[$2 + 4 >> 2] = HEAP32[$68 + 4 >> 2];
   HEAP32[$2 + 8 >> 2] = HEAP32[$68 + 8 >> 2];
   HEAP32[$68 >> 2] = 0;
   HEAP32[$68 + 4 >> 2] = 0;
   HEAP32[$68 + 8 >> 2] = 0;
   $71 = HEAP8[$op2 >> 0] | 0;
   $73 = ($71 & 1) == 0;
   $83 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $73 ? $op2 + 1 | 0 : HEAP32[$op2 + 8 >> 2] | 0, $73 ? ($71 & 255) >>> 1 : HEAP32[$op2 + 4 >> 2] | 0) | 0;
   HEAP32[$1 >> 2] = HEAP32[$83 >> 2];
   HEAP32[$1 + 4 >> 2] = HEAP32[$83 + 4 >> 2];
   HEAP32[$1 + 8 >> 2] = HEAP32[$83 + 8 >> 2];
   HEAP32[$83 >> 2] = 0;
   HEAP32[$83 + 4 >> 2] = 0;
   HEAP32[$83 + 8 >> 2] = 0;
   $86 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
   HEAP32[$0 >> 2] = HEAP32[$86 >> 2];
   HEAP32[$0 + 4 >> 2] = HEAP32[$86 + 4 >> 2];
   HEAP32[$0 + 8 >> 2] = HEAP32[$86 + 8 >> 2];
   HEAP32[$86 >> 2] = 0;
   HEAP32[$86 + 4 >> 2] = 0;
   HEAP32[$86 + 8 >> 2] = 0;
   $89 = HEAP8[$0 >> 0] | 0;
   $91 = ($89 & 1) == 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($26, $91 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($4);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($5);
   $101 = HEAP8[$op >> 0] | 0;
   $103 = ($101 & 1) == 0;
   $107 = $103 ? ($101 & 255) >>> 1 : HEAP32[$37 >> 2] | 0;
   $110 = $107 >>> 0 > 1;
   $112 = _memcmp($103 ? $44 : HEAP32[$42 >> 2] | 0, 12778, $110 ? 1 : $107) | 0;
   if (!((($112 | 0) == 0 ? (($107 | 0) == 0 ? -1 : $110 & 1) : $112) | 0)) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($26, 41);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op1);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($op2);
   $$0 = $8;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $14 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $49 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $64 = 0, $67 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0, $does_dst_type_point_to_our_static_type$0$off023 = 0, $does_dst_type_point_to_our_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$0$off025 = 0, $is_dst_type_derived_from_static_type$1$off0 = 0, $is_dst_type_derived_from_static_type$2$off0 = 0, $p$024 = 0, $p2$0 = 0, $p2$1 = 0, $p2$2 = 0, label = 0;
 L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {
  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {
   $6 = $info + 28 | 0;
   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;
  }
 } else {
  if (($this | 0) != (HEAP32[$info >> 2] | 0)) {
   $59 = HEAP32[$this + 12 >> 2] | 0;
   $60 = $this + 16 + ($59 << 3) | 0;
   __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this + 16 | 0, $info, $current_ptr, $path_below, $use_strcmp);
   $61 = $this + 24 | 0;
   if (($59 | 0) <= 1) break;
   $64 = HEAP32[$this + 8 >> 2] | 0;
   if (!($64 & 2)) {
    $67 = $info + 36 | 0;
    if ((HEAP32[$67 >> 2] | 0) != 1) {
     if (!($64 & 1)) {
      $79 = $info + 54 | 0;
      $p2$2 = $61;
      while (1) {
       if (HEAP8[$79 >> 0] | 0) break L1;
       if ((HEAP32[$67 >> 2] | 0) == 1) break L1;
       __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$2, $info, $current_ptr, $path_below, $use_strcmp);
       $p2$2 = $p2$2 + 8 | 0;
       if ($p2$2 >>> 0 >= $60 >>> 0) break L1;
      }
     }
     $77 = $info + 24 | 0;
     $78 = $info + 54 | 0;
     $p2$1 = $61;
     while (1) {
      if (HEAP8[$78 >> 0] | 0) break L1;
      if ((HEAP32[$67 >> 2] | 0) == 1) if ((HEAP32[$77 >> 2] | 0) == 1) break L1;
      __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$1, $info, $current_ptr, $path_below, $use_strcmp);
      $p2$1 = $p2$1 + 8 | 0;
      if ($p2$1 >>> 0 >= $60 >>> 0) break L1;
     }
    }
   }
   $70 = $info + 54 | 0;
   $p2$0 = $61;
   while (1) {
    if (HEAP8[$70 >> 0] | 0) break L1;
    __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($p2$0, $info, $current_ptr, $path_below, $use_strcmp);
    $p2$0 = $p2$0 + 8 | 0;
    if ($p2$0 >>> 0 >= $60 >>> 0) break L1;
   }
  }
  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {
   $14 = $info + 20 | 0;
   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {
    HEAP32[$info + 32 >> 2] = $path_below;
    $20 = $info + 44 | 0;
    if ((HEAP32[$20 >> 2] | 0) == 4) break;
    $24 = HEAP32[$this + 12 >> 2] | 0;
    $25 = $this + 16 + ($24 << 3) | 0;
    $26 = $info + 52 | 0;
    $27 = $info + 53 | 0;
    $28 = $info + 54 | 0;
    $29 = $this + 8 | 0;
    $30 = $info + 24 | 0;
    L34 : do if (($24 | 0) > 0) {
     $does_dst_type_point_to_our_static_type$0$off023 = 0;
     $is_dst_type_derived_from_static_type$0$off025 = 0;
     $p$024 = $this + 16 | 0;
     while (1) {
      HEAP8[$26 >> 0] = 0;
      HEAP8[$27 >> 0] = 0;
      __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$024, $info, $current_ptr, $current_ptr, 1, $use_strcmp);
      if (HEAP8[$28 >> 0] | 0) {
       $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023;
       $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$0$off025;
       label = 20;
       break L34;
      }
      do if (!(HEAP8[$27 >> 0] | 0)) {
       $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023;
       $is_dst_type_derived_from_static_type$1$off0 = $is_dst_type_derived_from_static_type$0$off025;
      } else {
       if (!(HEAP8[$26 >> 0] | 0)) if (!(HEAP32[$29 >> 2] & 1)) {
        $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$0$off023;
        $is_dst_type_derived_from_static_type$2$off0 = 1;
        label = 20;
        break L34;
       } else {
        $does_dst_type_point_to_our_static_type$1$off0 = $does_dst_type_point_to_our_static_type$0$off023;
        $is_dst_type_derived_from_static_type$1$off0 = 1;
        break;
       }
       if ((HEAP32[$30 >> 2] | 0) == 1) break L34;
       if (!(HEAP32[$29 >> 2] & 2)) break L34; else {
        $does_dst_type_point_to_our_static_type$1$off0 = 1;
        $is_dst_type_derived_from_static_type$1$off0 = 1;
       }
      } while (0);
      $p$024 = $p$024 + 8 | 0;
      if ($p$024 >>> 0 >= $25 >>> 0) {
       $does_dst_type_point_to_our_static_type$0$off0$lcssa = $does_dst_type_point_to_our_static_type$1$off0;
       $is_dst_type_derived_from_static_type$2$off0 = $is_dst_type_derived_from_static_type$1$off0;
       label = 20;
       break;
      } else {
       $does_dst_type_point_to_our_static_type$0$off023 = $does_dst_type_point_to_our_static_type$1$off0;
       $is_dst_type_derived_from_static_type$0$off025 = $is_dst_type_derived_from_static_type$1$off0;
      }
     }
    } else {
     $does_dst_type_point_to_our_static_type$0$off0$lcssa = 0;
     $is_dst_type_derived_from_static_type$2$off0 = 0;
     label = 20;
    } while (0);
    do if ((label | 0) == 20) {
     if ($does_dst_type_point_to_our_static_type$0$off0$lcssa) label = 24; else {
      HEAP32[$14 >> 2] = $current_ptr;
      $49 = $info + 40 | 0;
      HEAP32[$49 >> 2] = (HEAP32[$49 >> 2] | 0) + 1;
      if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$30 >> 2] | 0) == 2) {
       HEAP8[$28 >> 0] = 1;
       if ($is_dst_type_derived_from_static_type$2$off0) break;
      } else label = 24; else label = 24;
     }
     if ((label | 0) == 24) if ($is_dst_type_derived_from_static_type$2$off0) break;
     HEAP32[$20 >> 2] = 4;
     break L1;
    } while (0);
    HEAP32[$20 >> 2] = 3;
    break;
   }
  }
  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;
 } while (0);
 return;
}

function _arVecTridiagonalize($a, $d, $e) {
 $a = $a | 0;
 $d = $d | 0;
 $e = $e | 0;
 var $$0 = 0, $$pre$phiZ2D = 0, $1 = 0, $106 = 0, $107 = 0, $110 = 0, $112 = 0, $113 = 0, $114 = 0, $117 = 0, $118 = 0, $12 = 0, $120 = 0, $121 = 0, $125 = 0.0, $126 = 0, $13 = 0, $131 = 0, $14 = 0, $16 = 0, $17 = 0, $23 = 0, $25 = 0, $26 = 0.0, $32 = 0, $34 = 0, $35 = 0, $37 = 0, $40 = 0, $45 = 0.0, $54 = 0.0, $63 = 0.0, $65 = 0, $68 = 0.0, $70 = 0, $72 = 0.0, $73 = 0, $75 = 0, $84 = 0, $90 = 0, $92 = 0, $95 = 0, $97 = 0, $i$039 = 0, $i$143 = 0, $i$144 = 0, $i$223 = 0, $i$325 = 0, $j$032 = 0, $j$135 = 0, $j$240 = 0, $j$320 = 0, $k$047 = 0, $k$129$in = 0, $s$0$lcssa = 0.0, $s$031 = 0.0, $s$1$lcssa = 0.0, $s$134 = 0.0, $wv1 = 0, $wv2 = 0, label = 0, sp = 0, $k$047$looptemp = 0, $k$129$in$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $wv1 = sp + 8 | 0;
 $wv2 = sp;
 $1 = HEAP32[$a + 8 >> 2] | 0;
 if (($1 | 0) == (HEAP32[$a + 4 >> 2] | 0)) if (($1 | 0) == (HEAP32[$d + 4 >> 2] | 0)) if (($1 | 0) == ((HEAP32[$e + 4 >> 2] | 0) + 1 | 0)) {
  $12 = $1 + -2 | 0;
  $13 = $wv1 + 4 | 0;
  $14 = $wv2 + 4 | 0;
  if (($1 | 0) > 2) {
   $i$143 = $1 + -1 | 0;
   $k$047 = 0;
   do {
    $16 = Math_imul($k$047, $1) | 0;
    $17 = HEAP32[$a >> 2] | 0;
    HEAPF64[(HEAP32[$d >> 2] | 0) + ($k$047 << 3) >> 3] = +HEAPF64[$17 + ($16 + $k$047 << 3) >> 3];
    $23 = $1 - $k$047 + -1 | 0;
    HEAP32[$13 >> 2] = $23;
    $k$047$looptemp = $k$047;
    $k$047 = $k$047 + 1 | 0;
    $25 = $17 + ($16 + $k$047 << 3) | 0;
    HEAP32[$wv1 >> 2] = $25;
    $26 = +_arVecHousehold($wv1);
    HEAPF64[(HEAP32[$e >> 2] | 0) + ($k$047$looptemp << 3) >> 3] = $26;
    if (!($26 == 0.0)) {
     if (($k$047 | 0) < ($1 | 0)) {
      $32 = HEAP32[$d >> 2] | 0;
      $i$039 = $k$047;
      do {
       if (($k$047 | 0) < ($i$039 | 0)) {
        $34 = HEAP32[$a >> 2] | 0;
        $j$032 = $k$047;
        $s$031 = 0.0;
        while (1) {
         $40 = $34 + ((Math_imul($j$032, $1) | 0) + $i$039 << 3) | 0;
         $45 = $s$031 + +HEAPF64[$40 >> 3] * +HEAPF64[$17 + ($j$032 + $16 << 3) >> 3];
         $j$032 = $j$032 + 1 | 0;
         if (($j$032 | 0) >= ($i$039 | 0)) {
          $s$0$lcssa = $45;
          break;
         } else $s$031 = $45;
        }
       } else $s$0$lcssa = 0.0;
       $35 = Math_imul($i$039, $1) | 0;
       if (($i$039 | 0) < ($1 | 0)) {
        $37 = HEAP32[$a >> 2] | 0;
        $j$135 = $i$039;
        $s$134 = $s$0$lcssa;
        while (1) {
         $54 = $s$134 + +HEAPF64[$37 + ($j$135 + $35 << 3) >> 3] * +HEAPF64[$17 + ($j$135 + $16 << 3) >> 3];
         $j$135 = $j$135 + 1 | 0;
         if (($j$135 | 0) >= ($1 | 0)) {
          $s$1$lcssa = $54;
          break;
         } else $s$134 = $54;
        }
       } else $s$1$lcssa = $s$0$lcssa;
       HEAPF64[$32 + ($i$039 << 3) >> 3] = $s$1$lcssa;
       $i$039 = $i$039 + 1 | 0;
      } while (($i$039 | 0) < ($1 | 0));
     }
     HEAP32[$14 >> 2] = $23;
     HEAP32[$13 >> 2] = $23;
     HEAP32[$wv1 >> 2] = $25;
     HEAP32[$wv2 >> 2] = (HEAP32[$d >> 2] | 0) + ($k$047 << 3);
     $63 = +_arVecInnerproduct($wv1, $wv2) * .5;
     if (($i$143 | 0) > ($k$047$looptemp | 0)) {
      $65 = HEAP32[$d >> 2] | 0;
      $i$144 = $i$143;
      do {
       $68 = +HEAPF64[$17 + ($i$144 + $16 << 3) >> 3];
       $70 = $65 + ($i$144 << 3) | 0;
       $72 = +HEAPF64[$70 >> 3] - $63 * $68;
       HEAPF64[$70 >> 3] = $72;
       $73 = Math_imul($i$144, $1) | 0;
       if (($i$144 | 0) < ($1 | 0)) {
        $75 = HEAP32[$a >> 2] | 0;
        $j$240 = $i$144;
        do {
         $84 = $75 + ($j$240 + $73 << 3) | 0;
         HEAPF64[$84 >> 3] = +HEAPF64[$84 >> 3] - ($68 * +HEAPF64[$65 + ($j$240 << 3) >> 3] + $72 * +HEAPF64[$17 + ($j$240 + $16 << 3) >> 3]);
         $j$240 = $j$240 + 1 | 0;
        } while (($j$240 | 0) < ($1 | 0));
       }
       $i$144 = $i$144 + -1 | 0;
      } while (($i$144 | 0) > ($k$047$looptemp | 0));
     }
    }
   } while (($k$047 | 0) < ($12 | 0));
  }
  if (($1 | 0) > 1) {
   $90 = Math_imul($12, $1) | 0;
   $92 = HEAP32[$a >> 2] | 0;
   $95 = HEAP32[$d >> 2] | 0;
   HEAPF64[$95 + ($12 << 3) >> 3] = +HEAPF64[$92 + ($90 + $12 << 3) >> 3];
   $97 = $1 + -1 | 0;
   HEAPF64[(HEAP32[$e >> 2] | 0) + ($12 << 3) >> 3] = +HEAPF64[$92 + ($97 + $90 << 3) >> 3];
   $$pre$phiZ2D = $97;
   $107 = $92;
   $110 = $95;
   label = 27;
  } else if (($1 | 0) > 0) {
   $$pre$phiZ2D = 0;
   $107 = HEAP32[$a >> 2] | 0;
   $110 = HEAP32[$d >> 2] | 0;
   label = 27;
  }
  if ((label | 0) == 27) {
   $106 = $107 + ((Math_imul($$pre$phiZ2D, $1) | 0) + $$pre$phiZ2D << 3) | 0;
   HEAPF64[$110 + ($$pre$phiZ2D << 3) >> 3] = +HEAPF64[$106 >> 3];
  }
  if (($1 | 0) > 0) {
   $112 = ($1 | 0) > 0;
   $k$129$in = $1;
   do {
    $k$129$in$looptemp = $k$129$in;
    $k$129$in = $k$129$in + -1 | 0;
    $113 = Math_imul($k$129$in, $1) | 0;
    $114 = HEAP32[$a >> 2] | 0;
    if (($k$129$in$looptemp | 0) <= ($12 | 0)) {
     $117 = $1 - $k$129$in + -1 | 0;
     $118 = $114 + ($113 + $k$129$in$looptemp << 3) | 0;
     if (($k$129$in$looptemp | 0) < ($1 | 0)) {
      $120 = ($k$129$in$looptemp | 0) < ($1 | 0);
      $i$223 = $k$129$in$looptemp;
      do {
       HEAP32[$14 >> 2] = $117;
       HEAP32[$13 >> 2] = $117;
       HEAP32[$wv1 >> 2] = $118;
       $121 = Math_imul($i$223, $1) | 0;
       HEAP32[$wv2 >> 2] = (HEAP32[$a >> 2] | 0) + ($121 + $k$129$in$looptemp << 3);
       $125 = +_arVecInnerproduct($wv1, $wv2);
       if ($120) {
        $126 = HEAP32[$a >> 2] | 0;
        $j$320 = $k$129$in$looptemp;
        do {
         $131 = $126 + ($j$320 + $121 << 3) | 0;
         HEAPF64[$131 >> 3] = +HEAPF64[$131 >> 3] - $125 * +HEAPF64[$114 + ($j$320 + $113 << 3) >> 3];
         $j$320 = $j$320 + 1 | 0;
        } while (($j$320 | 0) < ($1 | 0));
       }
       $i$223 = $i$223 + 1 | 0;
      } while (($i$223 | 0) < ($1 | 0));
     }
    }
    if ($112) {
     $i$325 = 0;
     do {
      HEAPF64[$114 + ($i$325 + $113 << 3) >> 3] = 0.0;
      $i$325 = $i$325 + 1 | 0;
     } while (($i$325 | 0) < ($1 | 0));
    }
    HEAPF64[$114 + ($113 + $k$129$in << 3) >> 3] = 1.0;
   } while (($k$129$in$looptemp | 0) > 1);
   $$0 = 0;
  } else $$0 = 0;
 } else $$0 = -1; else $$0 = -1; else $$0 = -1;
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($first, $last, $db, $status) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 $status = $status | 0;
 var $$0$i$i$i11 = 0, $$0$i2 = 0, $$03$i = 0, $$lcssa = 0, $0 = 0, $1 = 0, $12 = 0, $13 = 0, $2 = 0, $20 = 0, $22 = 0, $24 = 0, $31 = 0, $32 = 0, $41 = 0, $44 = 0, $47 = 0, $49 = 0, $6 = 0, $66 = 0, $67 = 0, $78 = 0, $83 = 0, $95 = 0, $__p$0$i$i$i10 = 0, $__p$0$ph$i$i$i = 0, $i$0$i16 = 0, $t$0 = 0, $t$0$i15 = 0, $t$0$i15$lcssa20 = 0, $t$1$i$ph = 0, $t$1$i12 = 0, $t$2$i = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 24 | 0;
 $1 = sp + 12 | 0;
 $2 = sp;
 L1 : do if ($first >>> 0 < $last >>> 0) {
  L3 : do if ((HEAP8[$first >> 0] | 0) == 95) {
   $6 = $last;
   if (($6 - $first | 0) <= 3) {
    HEAP32[$status >> 2] = -2;
    break L1;
   }
   switch (HEAP8[$first + 1 >> 0] | 0) {
   case 90:
    {
     $12 = $first + 2 | 0;
     $13 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($12, $last, $db) | 0;
     if (($13 | 0) == ($12 | 0) | ($13 | 0) == ($last | 0)) $t$0 = $13; else if ((HEAP8[$13 >> 0] | 0) == 46) {
      $20 = HEAP32[$db + 4 >> 2] | 0;
      if ((HEAP32[$db >> 2] | 0) == ($20 | 0)) $$03$i = $13; else {
       $22 = $20 + -24 | 0;
       $24 = $6 - $13 | 0;
       if ($24 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($2);
       if ($24 >>> 0 < 11) {
        HEAP8[$2 >> 0] = $24 << 1;
        $__p$0$ph$i$i$i = $2 + 1 | 0;
       } else {
        $31 = $24 + 16 & -16;
        $32 = _malloc($31) | 0;
        HEAP32[$2 + 8 >> 2] = $32;
        HEAP32[$2 >> 2] = $31 | 1;
        HEAP32[$2 + 4 >> 2] = $24;
        $__p$0$ph$i$i$i = $32;
       }
       if (($13 | 0) != ($last | 0)) {
        $$0$i$i$i11 = $13;
        $__p$0$i$i$i10 = $__p$0$ph$i$i$i;
        while (1) {
         HEAP8[$__p$0$i$i$i10 >> 0] = HEAP8[$$0$i$i$i11 >> 0] | 0;
         $$0$i$i$i11 = $$0$i$i$i11 + 1 | 0;
         if (($$0$i$i$i11 | 0) == ($last | 0)) break; else $__p$0$i$i$i10 = $__p$0$i$i$i10 + 1 | 0;
        }
       }
       HEAP8[$__p$0$ph$i$i$i + $24 >> 0] = 0;
       $41 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($2, 0, 12616) | 0;
       HEAP32[$1 >> 2] = HEAP32[$41 >> 2];
       HEAP32[$1 + 4 >> 2] = HEAP32[$41 + 4 >> 2];
       HEAP32[$1 + 8 >> 2] = HEAP32[$41 + 8 >> 2];
       HEAP32[$41 >> 2] = 0;
       HEAP32[$41 + 4 >> 2] = 0;
       HEAP32[$41 + 8 >> 2] = 0;
       $44 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
       HEAP32[$0 >> 2] = HEAP32[$44 >> 2];
       HEAP32[$0 + 4 >> 2] = HEAP32[$44 + 4 >> 2];
       HEAP32[$0 + 8 >> 2] = HEAP32[$44 + 8 >> 2];
       HEAP32[$44 >> 2] = 0;
       HEAP32[$44 + 4 >> 2] = 0;
       HEAP32[$44 + 8 >> 2] = 0;
       $47 = HEAP8[$0 >> 0] | 0;
       $49 = ($47 & 1) == 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($22, $49 ? $0 + 1 | 0 : HEAP32[$0 + 8 >> 2] | 0, $49 ? ($47 & 255) >>> 1 : HEAP32[$0 + 4 >> 2] | 0) | 0;
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
       __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
       $$03$i = $last;
      }
      $t$0 = $$03$i;
     } else $t$0 = $13;
     if (($t$0 | 0) == ($last | 0)) break L3;
     HEAP32[$status >> 2] = -2;
     break L1;
     break;
    }
   case 95:
    {
     label = 20;
     break;
    }
   default:
    {}
   }
   if ((label | 0) == 20) if ((HEAP8[$first + 2 >> 0] | 0) == 95) if ((HEAP8[$first + 3 >> 0] | 0) == 90) {
    $66 = $first + 4 | 0;
    $67 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($66, $last, $db) | 0;
    if (($67 | 0) == ($66 | 0) | ($67 | 0) == ($last | 0)) {
     HEAP32[$status >> 2] = -2;
     break L1;
    }
    L36 : do if (($6 - $67 | 0) > 12) {
     $i$0$i16 = 0;
     $t$0$i15 = $67;
     while (1) {
      if ((HEAP8[$t$0$i15 >> 0] | 0) != (HEAP8[12621 + $i$0$i16 >> 0] | 0)) {
       $$0$i2 = $67;
       break L36;
      }
      $i$0$i16 = $i$0$i16 + 1 | 0;
      $78 = $t$0$i15 + 1 | 0;
      if (($i$0$i16 | 0) >= 13) {
       $$lcssa = $78;
       $t$0$i15$lcssa20 = $t$0$i15;
       break;
      } else $t$0$i15 = $78;
     }
     L41 : do if (($$lcssa | 0) == ($last | 0)) $t$2$i = $last; else {
      if ((HEAP8[$$lcssa >> 0] | 0) == 95) {
       $83 = $t$0$i15$lcssa20 + 2 | 0;
       if (($83 | 0) == ($last | 0)) {
        $$0$i2 = $67;
        break L36;
       }
       if (((HEAP8[$83 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
        $$0$i2 = $67;
        break L36;
       }
       $t$1$i$ph = $t$0$i15$lcssa20 + 3 | 0;
      } else $t$1$i$ph = $$lcssa;
      if (($t$1$i$ph | 0) == ($last | 0)) $t$2$i = $last; else {
       $t$1$i12 = $t$1$i$ph;
       while (1) {
        if (((HEAP8[$t$1$i12 >> 0] | 0) + -48 | 0) >>> 0 >= 10) {
         $t$2$i = $t$1$i12;
         break L41;
        }
        $t$1$i12 = $t$1$i12 + 1 | 0;
        if (($t$1$i12 | 0) == ($last | 0)) {
         $t$2$i = $last;
         break;
        }
       }
      }
     } while (0);
     $95 = HEAP32[$db + 4 >> 2] | 0;
     if ((HEAP32[$db >> 2] | 0) == ($95 | 0)) $$0$i2 = $67; else {
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($95 + -24 | 0, 0, 12635) | 0;
      $$0$i2 = $t$2$i;
     }
    } else $$0$i2 = $67; while (0);
    if (($$0$i2 | 0) == ($last | 0)) break;
    HEAP32[$status >> 2] = -2;
    break L1;
   }
   HEAP32[$status >> 2] = -2;
   break L1;
  } else if ((__ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0) != ($last | 0)) {
   HEAP32[$status >> 2] = -2;
   break L1;
  } while (0);
  if (!(HEAP32[$status >> 2] | 0)) if ((HEAP32[$db >> 2] | 0) == (HEAP32[$db + 4 >> 2] | 0)) HEAP32[$status >> 2] = -2;
 } else HEAP32[$status >> 2] = -2; while (0);
 STACKTOP = sp;
 return;
}

function _arMatrixSelfInv($m) {
 $m = $m | 0;
 var $$0$i = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $18 = 0.0, $19 = 0, $2 = 0, $24 = 0, $25 = 0, $26 = 0, $30 = 0.0, $35 = 0.0, $43 = 0, $44 = 0.0, $59 = 0, $61 = 0, $63 = 0, $65 = 0, $70 = 0.0, $exitcond$i23 = 0, $exitcond12$i36 = 0, $exitcond13$i43 = 0, $exitcond7$i30 = 0, $i$0$i14 = 0, $i$1$i45 = 0, $i$2$i8 = 0, $indvars$iv$i49 = 0, $indvars$iv9$i44 = 0, $ip$0$i51 = 0, $ip$1$i$lcssa = 0, $ip$1$i15 = 0, $ip$2$i = 0, $j$0$i24 = 0, $j$1$i31 = 0, $j$2$i37 = 0, $j$3$i$lcssa = 0, $j$3$i4 = 0, $n$0$i53 = 0, $n$1$i50 = 0, $n$2$i12 = 0, $nos$i = 0, $p$0$i$lcssa = 0.0, $p$0$i17 = 0.0, $p$1$i = 0.0, $scevgep$i = 0, $wap$0$i16 = 0, $wap$1$i26 = 0, $wap$2$i32 = 0, $wap$3$i39 = 0, $wap$4$i10 = 0, $wbp$0$i25 = 0, $wbp$1$i38 = 0, $wbp$2$i9 = 0, sp = 0, $wap$2$i32$looptemp = 0, $wap$3$i39$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 2e3 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $nos$i = sp;
 $0 = HEAP32[$m >> 2] | 0;
 $2 = HEAP32[$m + 4 >> 2] | 0;
 L1 : do if (($2 | 0) > 500) $$0$i = 0; else {
  switch ($2 | 0) {
  case 0:
   {
    $$0$i = 0;
    break L1;
    break;
   }
  case 1:
   {
    HEAPF64[$0 >> 3] = 1.0 / +HEAPF64[$0 >> 3];
    $$0$i = $0;
    break L1;
    break;
   }
  default:
   {}
  }
  if (($2 | 0) > 0) {
   $n$0$i53 = 0;
   do {
    HEAP32[$nos$i + ($n$0$i53 << 2) >> 2] = $n$0$i53;
    $n$0$i53 = $n$0$i53 + 1 | 0;
   } while (($n$0$i53 | 0) < ($2 | 0));
  }
  $scevgep$i = $0 + ($2 + -1 << 3) | 0;
  if (($2 | 0) > 0) {
   $exitcond$i23 = ($2 | 0) == 0;
   $exitcond7$i30 = ($2 | 0) == 1;
   $exitcond13$i43 = ($2 | 0) == 0;
   $exitcond12$i36 = ($2 | 0) == 1;
   $indvars$iv$i49 = $scevgep$i;
   $ip$0$i51 = 0;
   $n$1$i50 = 0;
   while (1) {
    $15 = $0 + ((Math_imul($n$1$i50, $2) | 0) << 3) | 0;
    if (($n$1$i50 | 0) < ($2 | 0)) {
     $i$0$i14 = $n$1$i50;
     $ip$1$i15 = $ip$0$i51;
     $p$0$i17 = 0.0;
     $wap$0$i16 = $15;
     while (1) {
      $18 = +Math_abs(+(+HEAPF64[$wap$0$i16 >> 3]));
      $19 = $p$0$i17 < $18;
      $ip$2$i = $19 ? $i$0$i14 : $ip$1$i15;
      $p$1$i = $19 ? $18 : $p$0$i17;
      $i$0$i14 = $i$0$i14 + 1 | 0;
      if (($i$0$i14 | 0) >= ($2 | 0)) {
       $ip$1$i$lcssa = $ip$2$i;
       $p$0$i$lcssa = $p$1$i;
       break;
      } else {
       $ip$1$i15 = $ip$2$i;
       $p$0$i17 = $p$1$i;
       $wap$0$i16 = $wap$0$i16 + ($2 << 3) | 0;
      }
     }
    } else {
     $ip$1$i$lcssa = $ip$0$i51;
     $p$0$i$lcssa = 0.0;
    }
    if ($p$0$i$lcssa <= 1.0e-10) {
     $$0$i = 0;
     break L1;
    }
    $24 = $nos$i + ($ip$1$i$lcssa << 2) | 0;
    $25 = HEAP32[$24 >> 2] | 0;
    $26 = $nos$i + ($n$1$i50 << 2) | 0;
    HEAP32[$24 >> 2] = HEAP32[$26 >> 2];
    HEAP32[$26 >> 2] = $25;
    if (!$exitcond$i23) {
     $j$0$i24 = 0;
     $wap$1$i26 = $0 + ((Math_imul($ip$1$i$lcssa, $2) | 0) << 3) | 0;
     $wbp$0$i25 = $15;
     while (1) {
      $30 = +HEAPF64[$wap$1$i26 >> 3];
      HEAPF64[$wap$1$i26 >> 3] = +HEAPF64[$wbp$0$i25 >> 3];
      HEAPF64[$wbp$0$i25 >> 3] = $30;
      $j$0$i24 = $j$0$i24 + 1 | 0;
      if (($j$0$i24 | 0) == ($2 | 0)) break; else {
       $wap$1$i26 = $wap$1$i26 + 8 | 0;
       $wbp$0$i25 = $wbp$0$i25 + 8 | 0;
      }
     }
    }
    $35 = +HEAPF64[$15 >> 3];
    if (!$exitcond7$i30) {
     $j$1$i31 = 1;
     $wap$2$i32 = $15;
     do {
      $wap$2$i32$looptemp = $wap$2$i32;
      $wap$2$i32 = $wap$2$i32 + 8 | 0;
      HEAPF64[$wap$2$i32$looptemp >> 3] = +HEAPF64[$wap$2$i32 >> 3] / $35;
      $j$1$i31 = $j$1$i31 + 1 | 0;
     } while (($j$1$i31 | 0) != ($2 | 0));
    }
    HEAPF64[$indvars$iv$i49 >> 3] = 1.0 / $35;
    if (!$exitcond13$i43) {
     $i$1$i45 = 0;
     $indvars$iv9$i44 = $scevgep$i;
     while (1) {
      if (($i$1$i45 | 0) != ($n$1$i50 | 0)) {
       $43 = $0 + ((Math_imul($i$1$i45, $2) | 0) << 3) | 0;
       $44 = +HEAPF64[$43 >> 3];
       if (!$exitcond12$i36) {
        $j$2$i37 = 1;
        $wap$3$i39 = $43;
        $wbp$1$i38 = $15;
        while (1) {
         $wap$3$i39$looptemp = $wap$3$i39;
         $wap$3$i39 = $wap$3$i39 + 8 | 0;
         HEAPF64[$wap$3$i39$looptemp >> 3] = +HEAPF64[$wap$3$i39 >> 3] - $44 * +HEAPF64[$wbp$1$i38 >> 3];
         $j$2$i37 = $j$2$i37 + 1 | 0;
         if (($j$2$i37 | 0) == ($2 | 0)) break; else $wbp$1$i38 = $wbp$1$i38 + 8 | 0;
        }
       }
       HEAPF64[$indvars$iv9$i44 >> 3] = -($44 * +HEAPF64[$indvars$iv$i49 >> 3]);
      }
      $i$1$i45 = $i$1$i45 + 1 | 0;
      if (($i$1$i45 | 0) == ($2 | 0)) break; else $indvars$iv9$i44 = $indvars$iv9$i44 + ($2 << 3) | 0;
     }
    }
    $n$1$i50 = $n$1$i50 + 1 | 0;
    if (($n$1$i50 | 0) >= ($2 | 0)) break; else {
     $indvars$iv$i49 = $indvars$iv$i49 + ($2 << 3) | 0;
     $ip$0$i51 = $ip$1$i$lcssa;
    }
   }
  }
  if (($2 | 0) > 0) {
   $13 = ($2 | 0) > 0;
   $n$2$i12 = 0;
   while (1) {
    $59 = $nos$i + ($n$2$i12 << 2) | 0;
    L43 : do if (($n$2$i12 | 0) < ($2 | 0)) {
     $61 = $59;
     $j$3$i4 = $n$2$i12;
     while (1) {
      if ((HEAP32[$61 >> 2] | 0) == ($n$2$i12 | 0)) {
       $$lcssa = $61;
       $j$3$i$lcssa = $j$3$i4;
       break L43;
      }
      $63 = $j$3$i4 + 1 | 0;
      $65 = $nos$i + ($63 << 2) | 0;
      if (($63 | 0) < ($2 | 0)) {
       $61 = $65;
       $j$3$i4 = $63;
      } else {
       $$lcssa = $65;
       $j$3$i$lcssa = $63;
       break;
      }
     }
    } else {
     $$lcssa = $59;
     $j$3$i$lcssa = $n$2$i12;
    } while (0);
    HEAP32[$$lcssa >> 2] = HEAP32[$nos$i + ($n$2$i12 << 2) >> 2];
    if ($13) {
     $i$2$i8 = 0;
     $wap$4$i10 = $0 + ($j$3$i$lcssa << 3) | 0;
     $wbp$2$i9 = $0 + ($n$2$i12 << 3) | 0;
     while (1) {
      $70 = +HEAPF64[$wap$4$i10 >> 3];
      HEAPF64[$wap$4$i10 >> 3] = +HEAPF64[$wbp$2$i9 >> 3];
      HEAPF64[$wbp$2$i9 >> 3] = $70;
      $i$2$i8 = $i$2$i8 + 1 | 0;
      if (($i$2$i8 | 0) >= ($2 | 0)) break; else {
       $wap$4$i10 = $wap$4$i10 + ($2 << 3) | 0;
       $wbp$2$i9 = $wbp$2$i9 + ($2 << 3) | 0;
      }
     }
    }
    $n$2$i12 = $n$2$i12 + 1 | 0;
    if (($n$2$i12 | 0) >= ($2 | 0)) {
     $$0$i = $0;
     break;
    }
   }
  } else $$0$i = $0;
 } while (0);
 STACKTOP = sp;
 return (($$0$i | 0) == 0) << 31 >> 31 | 0;
}

function _try_realloc_chunk($p, $nb) {
 $p = $p | 0;
 $nb = $nb | 0;
 var $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $101 = 0, $103 = 0, $106 = 0, $109 = 0, $110 = 0, $112 = 0, $113 = 0, $115 = 0, $116 = 0, $118 = 0, $119 = 0, $124 = 0, $125 = 0, $134 = 0, $139 = 0, $143 = 0, $149 = 0, $159 = 0, $168 = 0, $2 = 0, $20 = 0, $3 = 0, $33 = 0, $35 = 0, $4 = 0, $45 = 0, $47 = 0, $5 = 0, $56 = 0, $62 = 0, $68 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $76 = 0, $78 = 0, $8 = 0, $91 = 0, $96 = 0, $98 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $newp$0 = 0, $storemerge = 0, $storemerge21 = 0;
 $0 = $p + 4 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = $1 & -8;
 $3 = $p + $2 | 0;
 $4 = HEAP32[760] | 0;
 $5 = $1 & 3;
 if (!(($5 | 0) != 1 & $p >>> 0 >= $4 >>> 0 & $p >>> 0 < $3 >>> 0)) _abort();
 $7 = $p + ($2 | 4) | 0;
 $8 = HEAP32[$7 >> 2] | 0;
 if (!($8 & 1)) _abort();
 if (!$5) {
  if ($nb >>> 0 < 256) {
   $newp$0 = 0;
   return $newp$0 | 0;
  }
  if ($2 >>> 0 >= ($nb + 4 | 0) >>> 0) if (($2 - $nb | 0) >>> 0 <= HEAP32[876] << 1 >>> 0) {
   $newp$0 = $p;
   return $newp$0 | 0;
  }
  $newp$0 = 0;
  return $newp$0 | 0;
 }
 if ($2 >>> 0 >= $nb >>> 0) {
  $20 = $2 - $nb | 0;
  if ($20 >>> 0 <= 15) {
   $newp$0 = $p;
   return $newp$0 | 0;
  }
  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;
  HEAP32[$p + ($nb + 4) >> 2] = $20 | 3;
  HEAP32[$7 >> 2] = HEAP32[$7 >> 2] | 1;
  _dispose_chunk($p + $nb | 0, $20);
  $newp$0 = $p;
  return $newp$0 | 0;
 }
 if (($3 | 0) == (HEAP32[762] | 0)) {
  $33 = (HEAP32[759] | 0) + $2 | 0;
  if ($33 >>> 0 <= $nb >>> 0) {
   $newp$0 = 0;
   return $newp$0 | 0;
  }
  $35 = $33 - $nb | 0;
  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;
  HEAP32[$p + ($nb + 4) >> 2] = $35 | 1;
  HEAP32[762] = $p + $nb;
  HEAP32[759] = $35;
  $newp$0 = $p;
  return $newp$0 | 0;
 }
 if (($3 | 0) == (HEAP32[761] | 0)) {
  $45 = (HEAP32[758] | 0) + $2 | 0;
  if ($45 >>> 0 < $nb >>> 0) {
   $newp$0 = 0;
   return $newp$0 | 0;
  }
  $47 = $45 - $nb | 0;
  if ($47 >>> 0 > 15) {
   HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;
   HEAP32[$p + ($nb + 4) >> 2] = $47 | 1;
   HEAP32[$p + $45 >> 2] = $47;
   $56 = $p + ($45 + 4) | 0;
   HEAP32[$56 >> 2] = HEAP32[$56 >> 2] & -2;
   $storemerge = $p + $nb | 0;
   $storemerge21 = $47;
  } else {
   HEAP32[$0 >> 2] = $1 & 1 | $45 | 2;
   $62 = $p + ($45 + 4) | 0;
   HEAP32[$62 >> 2] = HEAP32[$62 >> 2] | 1;
   $storemerge = 0;
   $storemerge21 = 0;
  }
  HEAP32[758] = $storemerge21;
  HEAP32[761] = $storemerge;
  $newp$0 = $p;
  return $newp$0 | 0;
 }
 if ($8 & 2) {
  $newp$0 = 0;
  return $newp$0 | 0;
 }
 $68 = ($8 & -8) + $2 | 0;
 if ($68 >>> 0 < $nb >>> 0) {
  $newp$0 = 0;
  return $newp$0 | 0;
 }
 $70 = $68 - $nb | 0;
 $71 = $8 >>> 3;
 do if ($8 >>> 0 < 256) {
  $74 = HEAP32[$p + ($2 + 8) >> 2] | 0;
  $76 = HEAP32[$p + ($2 + 12) >> 2] | 0;
  $78 = 3064 + ($71 << 1 << 2) | 0;
  if (($74 | 0) != ($78 | 0)) {
   if ($74 >>> 0 < $4 >>> 0) _abort();
   if ((HEAP32[$74 + 12 >> 2] | 0) != ($3 | 0)) _abort();
  }
  if (($76 | 0) == ($74 | 0)) {
   HEAP32[756] = HEAP32[756] & ~(1 << $71);
   break;
  }
  if (($76 | 0) == ($78 | 0)) $$pre$phiZ2D = $76 + 8 | 0; else {
   if ($76 >>> 0 < $4 >>> 0) _abort();
   $91 = $76 + 8 | 0;
   if ((HEAP32[$91 >> 2] | 0) == ($3 | 0)) $$pre$phiZ2D = $91; else _abort();
  }
  HEAP32[$74 + 12 >> 2] = $76;
  HEAP32[$$pre$phiZ2D >> 2] = $74;
 } else {
  $96 = HEAP32[$p + ($2 + 24) >> 2] | 0;
  $98 = HEAP32[$p + ($2 + 12) >> 2] | 0;
  do if (($98 | 0) == ($3 | 0)) {
   $109 = $p + ($2 + 20) | 0;
   $110 = HEAP32[$109 >> 2] | 0;
   if (!$110) {
    $112 = $p + ($2 + 16) | 0;
    $113 = HEAP32[$112 >> 2] | 0;
    if (!$113) {
     $R$1 = 0;
     break;
    } else {
     $R$0 = $113;
     $RP$0 = $112;
    }
   } else {
    $R$0 = $110;
    $RP$0 = $109;
   }
   while (1) {
    $115 = $R$0 + 20 | 0;
    $116 = HEAP32[$115 >> 2] | 0;
    if ($116) {
     $R$0 = $116;
     $RP$0 = $115;
     continue;
    }
    $118 = $R$0 + 16 | 0;
    $119 = HEAP32[$118 >> 2] | 0;
    if (!$119) {
     $R$0$lcssa = $R$0;
     $RP$0$lcssa = $RP$0;
     break;
    } else {
     $R$0 = $119;
     $RP$0 = $118;
    }
   }
   if ($RP$0$lcssa >>> 0 < $4 >>> 0) _abort(); else {
    HEAP32[$RP$0$lcssa >> 2] = 0;
    $R$1 = $R$0$lcssa;
    break;
   }
  } else {
   $101 = HEAP32[$p + ($2 + 8) >> 2] | 0;
   if ($101 >>> 0 < $4 >>> 0) _abort();
   $103 = $101 + 12 | 0;
   if ((HEAP32[$103 >> 2] | 0) != ($3 | 0)) _abort();
   $106 = $98 + 8 | 0;
   if ((HEAP32[$106 >> 2] | 0) == ($3 | 0)) {
    HEAP32[$103 >> 2] = $98;
    HEAP32[$106 >> 2] = $101;
    $R$1 = $98;
    break;
   } else _abort();
  } while (0);
  if ($96) {
   $124 = HEAP32[$p + ($2 + 28) >> 2] | 0;
   $125 = 3328 + ($124 << 2) | 0;
   if (($3 | 0) == (HEAP32[$125 >> 2] | 0)) {
    HEAP32[$125 >> 2] = $R$1;
    if (!$R$1) {
     HEAP32[757] = HEAP32[757] & ~(1 << $124);
     break;
    }
   } else {
    if ($96 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort();
    $134 = $96 + 16 | 0;
    if ((HEAP32[$134 >> 2] | 0) == ($3 | 0)) HEAP32[$134 >> 2] = $R$1; else HEAP32[$96 + 20 >> 2] = $R$1;
    if (!$R$1) break;
   }
   $139 = HEAP32[760] | 0;
   if ($R$1 >>> 0 < $139 >>> 0) _abort();
   HEAP32[$R$1 + 24 >> 2] = $96;
   $143 = HEAP32[$p + ($2 + 16) >> 2] | 0;
   do if ($143) if ($143 >>> 0 < $139 >>> 0) _abort(); else {
    HEAP32[$R$1 + 16 >> 2] = $143;
    HEAP32[$143 + 24 >> 2] = $R$1;
    break;
   } while (0);
   $149 = HEAP32[$p + ($2 + 20) >> 2] | 0;
   if ($149) if ($149 >>> 0 < (HEAP32[760] | 0) >>> 0) _abort(); else {
    HEAP32[$R$1 + 20 >> 2] = $149;
    HEAP32[$149 + 24 >> 2] = $R$1;
    break;
   }
  }
 } while (0);
 if ($70 >>> 0 < 16) {
  HEAP32[$0 >> 2] = $68 | $1 & 1 | 2;
  $159 = $p + ($68 | 4) | 0;
  HEAP32[$159 >> 2] = HEAP32[$159 >> 2] | 1;
  $newp$0 = $p;
  return $newp$0 | 0;
 } else {
  HEAP32[$0 >> 2] = $1 & 1 | $nb | 2;
  HEAP32[$p + ($nb + 4) >> 2] = $70 | 3;
  $168 = $p + ($68 | 4) | 0;
  HEAP32[$168 >> 2] = HEAP32[$168 >> 2] | 1;
  _dispose_chunk($p + $nb | 0, $70);
  $newp$0 = $p;
  return $newp$0 | 0;
 }
 return 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_121parse_integer_literalINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $lit, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $lit = $lit | 0;
 $db = $db | 0;
 var $$0$i$i$i = 0, $$0$i$i$i5 = 0, $$02 = 0, $$1 = 0, $0 = 0, $1 = 0, $11 = 0, $17 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $37 = 0, $39 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $48 = 0, $52 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $67 = 0, $69 = 0, $72 = 0, $73 = 0, $76 = 0, $8 = 0, $82 = 0, $88 = 0, $90 = 0, $94 = 0, $__v$i$i4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i4 = sp + 48 | 0;
 $0 = sp + 24 | 0;
 $1 = sp + 12 | 0;
 $2 = sp;
 $3 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) | 0;
 if (($3 | 0) == ($first | 0) | ($3 | 0) == ($last | 0)) $$1 = $first; else if ((HEAP8[$3 >> 0] | 0) == 69) {
  $8 = HEAP8[$lit >> 0] | 0;
  $11 = $lit + 4 | 0;
  do if ((($8 & 1) == 0 ? ($8 & 255) >>> 1 : HEAP32[$11 >> 2] | 0) >>> 0 > 3) {
   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($2, 12714, $lit);
   $17 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
   HEAP32[$1 >> 2] = HEAP32[$17 >> 2];
   HEAP32[$1 + 4 >> 2] = HEAP32[$17 + 4 >> 2];
   HEAP32[$1 + 8 >> 2] = HEAP32[$17 + 8 >> 2];
   HEAP32[$17 >> 2] = 0;
   HEAP32[$17 + 4 >> 2] = 0;
   HEAP32[$17 + 8 >> 2] = 0;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
   $20 = $db + 4 | 0;
   $21 = HEAP32[$20 >> 2] | 0;
   $23 = HEAP32[$db + 8 >> 2] | 0;
   if ($21 >>> 0 < $23 >>> 0) {
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($21, $0);
    HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 24;
   } else {
    $30 = HEAP32[$db >> 2] | 0;
    $31 = $21 - $30 | 0;
    $32 = ($31 | 0) / 24 | 0;
    $33 = $32 + 1 | 0;
    if (($31 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
    $37 = ($23 - $30 | 0) / 24 | 0;
    if ($37 >>> 0 < 1073741823) {
     $39 = $37 << 1;
     $$0$i$i$i = $39 >>> 0 < $33 >>> 0 ? $33 : $39;
    } else $$0$i$i$i = 2147483647;
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i, $32, $db + 12 | 0);
    $42 = $__v$i$i4 + 8 | 0;
    $43 = HEAP32[$42 >> 2] | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($43, $0);
    HEAP32[$42 >> 2] = $43 + 24;
    __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4);
    __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4);
   }
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
  } else {
   $45 = $db + 4 | 0;
   $46 = HEAP32[$45 >> 2] | 0;
   $48 = HEAP32[$db + 8 >> 2] | 0;
   if ($46 >>> 0 < $48 >>> 0) {
    HEAP32[$46 >> 2] = 0;
    HEAP32[$46 + 4 >> 2] = 0;
    HEAP32[$46 + 8 >> 2] = 0;
    HEAP32[$46 + 12 >> 2] = 0;
    HEAP32[$46 + 16 >> 2] = 0;
    HEAP32[$46 + 20 >> 2] = 0;
    HEAP32[$46 >> 2] = 0;
    HEAP32[$46 + 4 >> 2] = 0;
    HEAP32[$46 + 8 >> 2] = 0;
    $52 = $46 + 12 | 0;
    HEAP32[$52 >> 2] = 0;
    HEAP32[$52 + 4 >> 2] = 0;
    HEAP32[$52 + 8 >> 2] = 0;
    HEAP32[$45 >> 2] = (HEAP32[$45 >> 2] | 0) + 24;
    break;
   }
   $60 = HEAP32[$db >> 2] | 0;
   $61 = $46 - $60 | 0;
   $62 = ($61 | 0) / 24 | 0;
   $63 = $62 + 1 | 0;
   if (($61 | 0) < -24) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($db);
   $67 = ($48 - $60 | 0) / 24 | 0;
   if ($67 >>> 0 < 1073741823) {
    $69 = $67 << 1;
    $$0$i$i$i5 = $69 >>> 0 < $63 >>> 0 ? $63 : $69;
   } else $$0$i$i$i5 = 2147483647;
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($__v$i$i4, $$0$i$i$i5, $62, $db + 12 | 0);
   $72 = $__v$i$i4 + 8 | 0;
   $73 = HEAP32[$72 >> 2] | 0;
   HEAP32[$73 >> 2] = 0;
   HEAP32[$73 + 4 >> 2] = 0;
   HEAP32[$73 + 8 >> 2] = 0;
   HEAP32[$73 + 12 >> 2] = 0;
   HEAP32[$73 + 16 >> 2] = 0;
   HEAP32[$73 + 20 >> 2] = 0;
   HEAP32[$73 >> 2] = 0;
   HEAP32[$73 + 4 >> 2] = 0;
   HEAP32[$73 + 8 >> 2] = 0;
   $76 = $73 + 12 | 0;
   HEAP32[$76 >> 2] = 0;
   HEAP32[$76 + 4 >> 2] = 0;
   HEAP32[$76 + 8 >> 2] = 0;
   HEAP32[$72 >> 2] = $73 + 24;
   __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($db, $__v$i$i4);
   __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($__v$i$i4);
  } while (0);
  $82 = $db + 4 | 0;
  if ((HEAP8[$first >> 0] | 0) == 110) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc((HEAP32[$82 >> 2] | 0) + -24 | 0, 45);
   $$02 = $first + 1 | 0;
  } else $$02 = $first;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_((HEAP32[$82 >> 2] | 0) + -24 | 0, $$02, $3);
  $88 = HEAP8[$lit >> 0] | 0;
  $90 = ($88 & 1) == 0;
  $94 = $90 ? ($88 & 255) >>> 1 : HEAP32[$11 >> 2] | 0;
  if ($94 >>> 0 < 4) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj((HEAP32[$82 >> 2] | 0) + -24 | 0, $90 ? $lit + 1 | 0 : HEAP32[$lit + 8 >> 2] | 0, $94) | 0;
  $$1 = $3 + 1 | 0;
 } else $$1 = $first;
 STACKTOP = sp;
 return $$1 | 0;
}

function _arGetContour($limage, $xsize, $ysize, $label_ref, $label, $clip, $marker_info2) {
 $limage = $limage | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $label_ref = $label_ref | 0;
 $label = $label | 0;
 $clip = $clip | 0;
 $marker_info2 = $marker_info2 | 0;
 var $$0 = 0, $$lcssa68 = 0, $$lcssa69 = 0, $1 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $24 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $34 = 0, $38 = 0, $4 = 0, $40 = 0, $41 = 0, $46 = 0, $48 = 0, $49 = 0, $56 = 0, $61 = 0, $62 = 0, $65 = 0, $67 = 0, $68 = 0, $83 = 0, $9 = 0, $92 = 0, $dir$0 = 0, $dir$1 = 0, $dir$1$lcssa = 0, $dir$130 = 0, $dir$146 = 0, $dmax$040 = 0, $i$048 = 0, $i$048$lcssa = 0, $i$145 = 0, $i$2$v1$0 = 0, $i$242 = 0, $i$338 = 0, $i$436 = 0, $i$535 = 0, $p1$047 = 0, $v1$0$lcssa = 0, $v1$041 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, $wx = 0, $wy = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 80032 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 $wx = sp + 40024 | 0;
 $wy = sp + 24 | 0;
 $1 = HEAP32[$clip + 8 >> 2] | 0;
 $2 = HEAP32[$clip >> 2] | 0;
 $4 = HEAP32[$clip + 4 >> 2] | 0;
 L1 : do if (($2 | 0) > ($4 | 0)) label = 6; else {
  $i$048 = $2;
  $p1$047 = $limage + ((Math_imul($1, $xsize) | 0) + $2 << 1) | 0;
  while (1) {
   $9 = HEAP16[$p1$047 >> 1] | 0;
   if ($9 << 16 >> 16 > 0) if ((HEAP32[$label_ref + (($9 << 16 >> 16) + -1 << 2) >> 2] | 0) == ($label | 0)) {
    $i$048$lcssa = $i$048;
    break;
   }
   if (($i$048 | 0) < ($4 | 0)) {
    $i$048 = $i$048 + 1 | 0;
    $p1$047 = $p1$047 + 2 | 0;
   } else {
    label = 6;
    break L1;
   }
  }
  $19 = $marker_info2 + 24 | 0;
  HEAP32[$19 >> 2] = 1;
  $20 = $marker_info2 + 28 | 0;
  HEAP32[$20 >> 2] = $i$048$lcssa;
  $21 = $marker_info2 + 40028 | 0;
  HEAP32[$21 >> 2] = $1;
  $27 = $1;
  $29 = $i$048$lcssa;
  $40 = 1;
  $dir$0 = 5;
  while (1) {
   $dir$146 = ($dir$0 + 5 | 0) % 8 | 0;
   $i$145 = 0;
   while (1) {
    $24 = HEAP32[776 + ($dir$146 << 2) >> 2] | 0;
    $26 = HEAP32[808 + ($dir$146 << 2) >> 2] | 0;
    $30 = $limage + ($26 + $29 + (Math_imul($24 + $27 | 0, $xsize) | 0) << 1) | 0;
    if ((HEAP16[$30 >> 1] | 0) > 0) {
     $38 = $26;
     $46 = $24;
     $dir$130 = $dir$146;
     break;
    }
    $34 = $i$145 + 1 | 0;
    $dir$1 = ($dir$146 + 1 | 0) % 8 | 0;
    if (($34 | 0) < 8) {
     $dir$146 = $dir$1;
     $i$145 = $34;
    } else {
     $$lcssa68 = $34;
     $dir$1$lcssa = $dir$1;
     label = 11;
     break;
    }
   }
   if ((label | 0) == 11) {
    label = 0;
    if (($$lcssa68 | 0) == 8) {
     label = 13;
     break;
    }
    $38 = HEAP32[808 + ($dir$1$lcssa << 2) >> 2] | 0;
    $46 = HEAP32[776 + ($dir$1$lcssa << 2) >> 2] | 0;
    $dir$130 = $dir$1$lcssa;
   }
   HEAP32[$marker_info2 + 28 + ($40 << 2) >> 2] = $38 + $29;
   $41 = HEAP32[$19 >> 2] | 0;
   HEAP32[$marker_info2 + 40028 + ($41 << 2) >> 2] = $46 + (HEAP32[$marker_info2 + 40028 + ($41 + -1 << 2) >> 2] | 0);
   $48 = HEAP32[$19 >> 2] | 0;
   $49 = $marker_info2 + 28 + ($48 << 2) | 0;
   if ((HEAP32[$49 >> 2] | 0) == ($i$048$lcssa | 0)) if ((HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0) == ($1 | 0)) {
    $$lcssa69 = $48;
    label = 16;
    break;
   }
   $56 = $48 + 1 | 0;
   HEAP32[$19 >> 2] = $56;
   if (($56 | 0) == 9999) {
    label = 19;
    break;
   }
   $27 = HEAP32[$marker_info2 + 40028 + ($48 << 2) >> 2] | 0;
   $29 = HEAP32[$49 >> 2] | 0;
   $40 = $56;
   $dir$0 = $dir$130;
  }
  if ((label | 0) == 13) {
   _arLog(3, 4347, $vararg_buffer1);
   $$0 = -1;
   break;
  } else if ((label | 0) == 16) {
   if (($$lcssa69 | 0) > 1) {
    $dmax$040 = 0;
    $i$242 = 1;
    $v1$041 = 0;
    while (1) {
     $61 = (HEAP32[$marker_info2 + 28 + ($i$242 << 2) >> 2] | 0) - $i$048$lcssa | 0;
     $62 = Math_imul($61, $61) | 0;
     $65 = (HEAP32[$marker_info2 + 40028 + ($i$242 << 2) >> 2] | 0) - $1 | 0;
     $67 = (Math_imul($65, $65) | 0) + $62 | 0;
     $68 = ($67 | 0) > ($dmax$040 | 0);
     $i$2$v1$0 = $68 ? $i$242 : $v1$041;
     $i$242 = $i$242 + 1 | 0;
     if (($i$242 | 0) >= ($$lcssa69 | 0)) {
      $v1$0$lcssa = $i$2$v1$0;
      break;
     } else {
      $dmax$040 = $68 ? $67 : $dmax$040;
      $v1$041 = $i$2$v1$0;
     }
    }
   } else $v1$0$lcssa = 0;
   if (($v1$0$lcssa | 0) > 0) {
    $i$338 = 0;
    do {
     HEAP32[$wx + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$338 << 2) >> 2];
     HEAP32[$wy + ($i$338 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$338 << 2) >> 2];
     $i$338 = $i$338 + 1 | 0;
    } while (($i$338 | 0) < ($v1$0$lcssa | 0));
   }
   if (($v1$0$lcssa | 0) < ($$lcssa69 | 0)) {
    $i$436 = $v1$0$lcssa;
    do {
     $83 = $i$436 - $v1$0$lcssa | 0;
     HEAP32[$marker_info2 + 28 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 28 + ($i$436 << 2) >> 2];
     HEAP32[$marker_info2 + 40028 + ($83 << 2) >> 2] = HEAP32[$marker_info2 + 40028 + ($i$436 << 2) >> 2];
     $i$436 = $i$436 + 1 | 0;
    } while (($i$436 | 0) < (HEAP32[$19 >> 2] | 0));
   }
   if (($v1$0$lcssa | 0) > 0) {
    $i$535 = 0;
    do {
     $92 = $i$535 - $v1$0$lcssa | 0;
     HEAP32[$marker_info2 + 28 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wx + ($i$535 << 2) >> 2];
     HEAP32[$marker_info2 + 40028 + ((HEAP32[$19 >> 2] | 0) + $92 << 2) >> 2] = HEAP32[$wy + ($i$535 << 2) >> 2];
     $i$535 = $i$535 + 1 | 0;
    } while (($i$535 | 0) < ($v1$0$lcssa | 0));
   }
   HEAP32[$marker_info2 + 28 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$20 >> 2];
   HEAP32[$marker_info2 + 40028 + (HEAP32[$19 >> 2] << 2) >> 2] = HEAP32[$21 >> 2];
   HEAP32[$19 >> 2] = (HEAP32[$19 >> 2] | 0) + 1;
   $$0 = 0;
   break;
  } else if ((label | 0) == 19) {
   _arLog(3, 4354, $vararg_buffer3);
   $$0 = -1;
   break;
  }
 } while (0);
 if ((label | 0) == 6) {
  _arLog(3, 4340, $vararg_buffer);
  $$0 = -1;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function ___cxa_demangle($mangled_name, $buf, $n, $status) {
 $mangled_name = $mangled_name | 0;
 $buf = $buf | 0;
 $n = $n | 0;
 $status = $status | 0;
 var $$0 = 0, $$028 = 0, $$1 = 0, $1 = 0, $10 = 0, $101 = 0, $102 = 0, $109 = 0, $11 = 0, $112 = 0, $15 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $30 = 0, $31 = 0, $35 = 0, $42 = 0, $43 = 0, $45 = 0, $46 = 0, $49 = 0, $50 = 0, $52 = 0, $53 = 0, $59 = 0, $6 = 0, $60 = 0, $62 = 0, $7 = 0, $70 = 0, $77 = 0, $78 = 0, $79 = 0, $80 = 0, $82 = 0, $83 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $__v$i$i = 0, $a = 0, $db = 0, $internal_status = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 4208 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v$i$i = sp + 4184 | 0;
 $a = sp;
 $db = sp + 4120 | 0;
 $internal_status = sp + 4112 | 0;
 if (!$mangled_name) label = 3; else {
  $1 = ($buf | 0) != 0;
  $2 = ($n | 0) == 0;
  if ($1 & $2) label = 3; else {
   if ($1) $82 = HEAP32[$n >> 2] | 0; else $82 = 0;
   HEAP32[$a + 4096 >> 2] = $a;
   $6 = $a;
   HEAP32[$db >> 2] = 0;
   $7 = $db + 4 | 0;
   HEAP32[$7 >> 2] = 0;
   HEAP32[$db + 8 >> 2] = 0;
   HEAP32[$db + 12 >> 2] = $6;
   $10 = $db + 16 | 0;
   HEAP32[$10 >> 2] = 0;
   $11 = $db + 20 | 0;
   HEAP32[$11 >> 2] = 0;
   HEAP32[$db + 24 >> 2] = 0;
   HEAP32[$db + 28 >> 2] = $6;
   HEAP32[$db + 32 >> 2] = 0;
   $15 = $db + 36 | 0;
   HEAP32[$15 >> 2] = 0;
   HEAP32[$db + 40 >> 2] = 0;
   $17 = $db + 44 | 0;
   HEAP32[$17 >> 2] = $6;
   $18 = $db + 48 | 0;
   $19 = $db + 61 | 0;
   HEAP32[$18 >> 2] = 0;
   HEAP32[$18 + 4 >> 2] = 0;
   HEAP32[$18 + 8 >> 2] = 0;
   HEAP8[$18 + 12 >> 0] = 0;
   HEAP8[$19 >> 0] = 1;
   $20 = $db + 32 | 0;
   __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($__v$i$i, 1, 0, $17);
   $21 = $__v$i$i + 8 | 0;
   $22 = HEAP32[$21 >> 2] | 0;
   HEAP32[$22 >> 2] = 0;
   HEAP32[$22 + 4 >> 2] = 0;
   HEAP32[$22 + 8 >> 2] = 0;
   HEAP32[$22 + 12 >> 2] = $6;
   HEAP32[$21 >> 2] = $22 + 16;
   __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($20, $__v$i$i);
   __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($__v$i$i);
   $27 = $db + 62 | 0;
   HEAP8[$27 >> 0] = 0;
   HEAP8[$db + 63 >> 0] = 1;
   HEAP32[$internal_status >> 2] = 0;
   $30 = $mangled_name + (_strlen($mangled_name) | 0) | 0;
   __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status);
   $31 = HEAP32[$internal_status >> 2] | 0;
   do if (($31 | 0) != 0 | (HEAP8[$27 >> 0] | 0) == 0) {
    $59 = $31;
    label = 17;
   } else {
    $35 = HEAP32[$20 >> 2] | 0;
    if (($35 | 0) == (HEAP32[$15 >> 2] | 0)) label = 18; else if ((HEAP32[$35 >> 2] | 0) == (HEAP32[$35 + 4 >> 2] | 0)) label = 18; else {
     HEAP8[$27 >> 0] = 0;
     HEAP8[$19 >> 0] = 0;
     $42 = HEAP32[$db >> 2] | 0;
     $43 = HEAP32[$7 >> 2] | 0;
     if (($43 | 0) != ($42 | 0)) {
      $46 = $43;
      do {
       $45 = $46 + -24 | 0;
       HEAP32[$7 >> 2] = $45;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($45);
       $46 = HEAP32[$7 >> 2] | 0;
      } while (($46 | 0) != ($42 | 0));
     }
     $49 = HEAP32[$10 >> 2] | 0;
     $50 = HEAP32[$11 >> 2] | 0;
     if (($50 | 0) != ($49 | 0)) {
      $53 = $50;
      do {
       $52 = $53 + -16 | 0;
       HEAP32[$11 >> 2] = $52;
       __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($52);
       $53 = HEAP32[$11 >> 2] | 0;
      } while (($53 | 0) != ($49 | 0));
     }
     __ZN10__cxxabiv112_GLOBAL__N_18demangleINS0_2DbEEEvPKcS4_RT_Ri($mangled_name, $30, $db, $internal_status);
     if (!(HEAP8[$27 >> 0] | 0)) {
      $59 = HEAP32[$internal_status >> 2] | 0;
      label = 17;
      break;
     } else {
      HEAP32[$internal_status >> 2] = -2;
      $$1 = 0;
      $112 = -2;
      break;
     }
    }
   } while (0);
   if ((label | 0) == 17) if (!$59) label = 18; else {
    $$1 = 0;
    $112 = $59;
   }
   do if ((label | 0) == 18) {
    $60 = HEAP32[$7 >> 2] | 0;
    $62 = HEAP8[$60 + -24 >> 0] | 0;
    if (!($62 & 1)) $79 = ($62 & 255) >>> 1; else $79 = HEAP32[$60 + -20 >> 2] | 0;
    $70 = HEAP8[$60 + -12 >> 0] | 0;
    if (!($70 & 1)) $78 = ($70 & 255) >>> 1; else $78 = HEAP32[$60 + -8 >> 2] | 0;
    $77 = $78 + $79 | 0;
    $80 = $77 + 1 | 0;
    if ($80 >>> 0 > $82 >>> 0) {
     $83 = _realloc($buf, $80) | 0;
     if (!$83) {
      HEAP32[$internal_status >> 2] = -1;
      $$1 = 0;
      $112 = -1;
      break;
     }
     if ($2) $$028 = $83; else {
      HEAP32[$n >> 2] = $80;
      $$028 = $83;
     }
    } else if (!$buf) {
     $$1 = 0;
     $112 = 0;
     break;
    } else $$028 = $buf;
    $86 = HEAP32[$7 >> 2] | 0;
    $88 = $86 + -12 | 0;
    $89 = HEAP8[$88 >> 0] | 0;
    $91 = ($89 & 1) == 0;
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($86 + -24 | 0, $91 ? $88 + 1 | 0 : HEAP32[$86 + -4 >> 2] | 0, $91 ? ($89 & 255) >>> 1 : HEAP32[$86 + -8 >> 2] | 0) | 0;
    $101 = HEAP32[$7 >> 2] | 0;
    $102 = $101 + -24 | 0;
    if (!(HEAP8[$102 >> 0] & 1)) $109 = $102 + 1 | 0; else $109 = HEAP32[$101 + -16 >> 2] | 0;
    _memcpy($$028 | 0, $109 | 0, $77 | 0) | 0;
    HEAP8[$$028 + $77 >> 0] = 0;
    $$1 = $$028;
    $112 = 0;
   } while (0);
   if ($status) HEAP32[$status >> 2] = $112;
   __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($db);
   $$0 = $$1;
  }
 }
 if ((label | 0) == 3) if (!$status) $$0 = 0; else {
  HEAP32[$status >> 2] = -3;
  $$0 = 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _fmod($x, $y) {
 $x = +$x;
 $y = +$y;
 var $$0 = 0.0, $$lcssa7 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $106 = 0, $107 = 0, $11 = 0, $112 = 0, $114 = 0, $116 = 0, $119 = 0, $12 = 0, $121 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $130 = 0, $137 = 0, $138 = 0, $139 = 0, $140 = 0, $141 = 0, $146 = 0, $149 = 0, $150 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $16 = 0, $2 = 0, $23 = 0.0, $25 = 0, $26 = 0, $3 = 0, $37 = 0, $38 = 0, $4 = 0, $44 = 0, $45 = 0, $46 = 0, $55 = 0, $6 = 0, $60 = 0, $61 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $78 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $93 = 0, $95 = 0, $97 = 0, $ex$0$lcssa = 0, $ex$026 = 0, $ex$1 = 0, $ex$2$lcssa = 0, $ex$212 = 0, $ex$3$lcssa = 0, $ex$39 = 0, $ey$0$lcssa = 0, $ey$020 = 0, $ey$1$ph = 0, label = 0;
 HEAPF64[tempDoublePtr >> 3] = $x;
 $0 = HEAP32[tempDoublePtr >> 2] | 0;
 $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 HEAPF64[tempDoublePtr >> 3] = $y;
 $2 = HEAP32[tempDoublePtr >> 2] | 0;
 $3 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 $4 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0;
 $6 = $4 & 2047;
 $7 = _bitshift64Lshr($2 | 0, $3 | 0, 52) | 0;
 $9 = $7 & 2047;
 $10 = $1 & -2147483648;
 $11 = _bitshift64Shl($2 | 0, $3 | 0, 1) | 0;
 $12 = tempRet0;
 L1 : do if (($11 | 0) == 0 & ($12 | 0) == 0) label = 3; else {
  $16 = $3 & 2147483647;
  if ($16 >>> 0 > 2146435072 | ($16 | 0) == 2146435072 & $2 >>> 0 > 0 | ($6 | 0) == 2047) label = 3; else {
   $25 = _bitshift64Shl($0 | 0, $1 | 0, 1) | 0;
   $26 = tempRet0;
   if (!($26 >>> 0 > $12 >>> 0 | ($26 | 0) == ($12 | 0) & $25 >>> 0 > $11 >>> 0)) return +(($25 | 0) == ($11 | 0) & ($26 | 0) == ($12 | 0) ? $x * 0.0 : $x);
   if (!$6) {
    $37 = _bitshift64Shl($0 | 0, $1 | 0, 12) | 0;
    $38 = tempRet0;
    if (($38 | 0) > -1 | ($38 | 0) == -1 & $37 >>> 0 > 4294967295) {
     $45 = $37;
     $46 = $38;
     $ex$026 = 0;
     while (1) {
      $44 = $ex$026 + -1 | 0;
      $45 = _bitshift64Shl($45 | 0, $46 | 0, 1) | 0;
      $46 = tempRet0;
      if (!(($46 | 0) > -1 | ($46 | 0) == -1 & $45 >>> 0 > 4294967295)) {
       $ex$0$lcssa = $44;
       break;
      } else $ex$026 = $44;
     }
    } else $ex$0$lcssa = 0;
    $55 = _bitshift64Shl($0 | 0, $1 | 0, 1 - $ex$0$lcssa | 0) | 0;
    $83 = $55;
    $84 = tempRet0;
    $ex$1 = $ex$0$lcssa;
   } else {
    $83 = $0;
    $84 = $1 & 1048575 | 1048576;
    $ex$1 = $6;
   }
   if (!$9) {
    $60 = _bitshift64Shl($2 | 0, $3 | 0, 12) | 0;
    $61 = tempRet0;
    if (($61 | 0) > -1 | ($61 | 0) == -1 & $60 >>> 0 > 4294967295) {
     $68 = $60;
     $69 = $61;
     $ey$020 = 0;
     while (1) {
      $67 = $ey$020 + -1 | 0;
      $68 = _bitshift64Shl($68 | 0, $69 | 0, 1) | 0;
      $69 = tempRet0;
      if (!(($69 | 0) > -1 | ($69 | 0) == -1 & $68 >>> 0 > 4294967295)) {
       $ey$0$lcssa = $67;
       break;
      } else $ey$020 = $67;
     }
    } else $ey$0$lcssa = 0;
    $78 = _bitshift64Shl($2 | 0, $3 | 0, 1 - $ey$0$lcssa | 0) | 0;
    $85 = $78;
    $86 = tempRet0;
    $ey$1$ph = $ey$0$lcssa;
   } else {
    $85 = $2;
    $86 = $3 & 1048575 | 1048576;
    $ey$1$ph = $9;
   }
   $87 = _i64Subtract($83 | 0, $84 | 0, $85 | 0, $86 | 0) | 0;
   $88 = tempRet0;
   $93 = ($88 | 0) > -1 | ($88 | 0) == -1 & $87 >>> 0 > 4294967295;
   L23 : do if (($ex$1 | 0) > ($ey$1$ph | 0)) {
    $152 = $93;
    $153 = $87;
    $154 = $88;
    $95 = $83;
    $97 = $84;
    $ex$212 = $ex$1;
    while (1) {
     if ($152) if (($95 | 0) == ($85 | 0) & ($97 | 0) == ($86 | 0)) break; else {
      $100 = $153;
      $101 = $154;
     } else {
      $100 = $95;
      $101 = $97;
     }
     $102 = _bitshift64Shl($100 | 0, $101 | 0, 1) | 0;
     $103 = tempRet0;
     $104 = $ex$212 + -1 | 0;
     $106 = _i64Subtract($102 | 0, $103 | 0, $85 | 0, $86 | 0) | 0;
     $107 = tempRet0;
     $112 = ($107 | 0) > -1 | ($107 | 0) == -1 & $106 >>> 0 > 4294967295;
     if (($104 | 0) > ($ey$1$ph | 0)) {
      $152 = $112;
      $153 = $106;
      $154 = $107;
      $95 = $102;
      $97 = $103;
      $ex$212 = $104;
     } else {
      $$lcssa7 = $112;
      $114 = $102;
      $116 = $103;
      $155 = $106;
      $156 = $107;
      $ex$2$lcssa = $104;
      break L23;
     }
    }
    $$0 = $x * 0.0;
    break L1;
   } else {
    $$lcssa7 = $93;
    $114 = $83;
    $116 = $84;
    $155 = $87;
    $156 = $88;
    $ex$2$lcssa = $ex$1;
   } while (0);
   if ($$lcssa7) if (($114 | 0) == ($85 | 0) & ($116 | 0) == ($86 | 0)) {
    $$0 = $x * 0.0;
    break;
   } else {
    $119 = $156;
    $121 = $155;
   } else {
    $119 = $116;
    $121 = $114;
   }
   if ($119 >>> 0 < 1048576 | ($119 | 0) == 1048576 & $121 >>> 0 < 0) {
    $126 = $121;
    $127 = $119;
    $ex$39 = $ex$2$lcssa;
    while (1) {
     $128 = _bitshift64Shl($126 | 0, $127 | 0, 1) | 0;
     $129 = tempRet0;
     $130 = $ex$39 + -1 | 0;
     if ($129 >>> 0 < 1048576 | ($129 | 0) == 1048576 & $128 >>> 0 < 0) {
      $126 = $128;
      $127 = $129;
      $ex$39 = $130;
     } else {
      $137 = $128;
      $138 = $129;
      $ex$3$lcssa = $130;
      break;
     }
    }
   } else {
    $137 = $121;
    $138 = $119;
    $ex$3$lcssa = $ex$2$lcssa;
   }
   if (($ex$3$lcssa | 0) > 0) {
    $139 = _i64Add($137 | 0, $138 | 0, 0, -1048576) | 0;
    $140 = tempRet0;
    $141 = _bitshift64Shl($ex$3$lcssa | 0, 0, 52) | 0;
    $149 = $140 | tempRet0;
    $150 = $139 | $141;
   } else {
    $146 = _bitshift64Lshr($137 | 0, $138 | 0, 1 - $ex$3$lcssa | 0) | 0;
    $149 = tempRet0;
    $150 = $146;
   }
   HEAP32[tempDoublePtr >> 2] = $150;
   HEAP32[tempDoublePtr + 4 >> 2] = $149 | $10;
   $$0 = +HEAPF64[tempDoublePtr >> 3];
  }
 } while (0);
 if ((label | 0) == 3) {
  $23 = $x * $y;
  $$0 = $23 / $23;
 }
 return +$$0;
}

function __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev($this) {
 $this = $this | 0;
 var $0 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8590, 7);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8596, 3);
 __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8605, 2);
 __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8616, 3);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8632, 4);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8650, 4);
 __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_(8670, 5);
 __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8682, 8);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8699, 5);
 __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8719, 9);
 __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8737, 10);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8759, 6);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8782, 7);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8811, 6);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8824, 7);
 __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_(8837, 11);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8856, 8);
 __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_(8866, 9);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8879, 8);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(8892, 9);
 __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_(8911, 10);
 __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_(8923, 1);
 __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8935, 1);
 __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(8958, 1);
 __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_(8981, 2);
 __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9003, 2);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9025, 1);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9042, 10);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9059, 2);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9072, 11);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9085, 3);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9109, 12);
 __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_(9133, 3);
 __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_(9146, 3);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9159, 4);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9177, 13);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9195, 5);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9211, 14);
 __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_(9227, 6);
 __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_(9244, 15);
 __ZN10emscripten8constantIiEEvPKcRKT_(9261, 2088);
 __ZN10emscripten8constantIiEEvPKcRKT_(9290, 2096);
 __ZN10emscripten8constantIiEEvPKcRKT_(9318, 2092);
 __embind_register_constant(9351, 680, 0);
 __embind_register_constant(9368, 680, 1);
 __embind_register_constant(9384, 680, 0);
 __embind_register_constant(9406, 680, 0);
 __embind_register_constant(9431, 680, 1);
 __embind_register_constant(9456, 680, 1);
 __embind_register_constant(9481, 680, 100);
 __embind_register_constant(9508, 680, 0);
 __embind_register_constant(9534, 680, 1);
 __embind_register_constant(9560, 680, 0);
 __embind_register_constant(9587, 680, 0);
 __embind_register_constant(9614, 680, 1);
 __embind_register_constant(9640, 680, 2);
 __embind_register_constant(9665, 680, 3);
 __embind_register_constant(9703, 680, 4);
 __embind_register_constant(9740, 680, 0);
 __embind_register_constant(9774, 680, 0);
 __embind_register_constant(9798, 680, 1);
 __embind_register_constant(9824, 680, 2);
 __embind_register_constant(9851, 680, 2);
 __embind_register_constant(9885, 680, 5);
 HEAPF64[$0 >> 3] = .5;
 __ZN10emscripten8constantIdEEvPKcRKT_(9903, $0);
 __embind_register_constant(9924, 680, 0);
 __embind_register_constant(9943, 680, 1);
 __embind_register_constant(9961, 680, 2);
 __embind_register_constant(9979, 680, 3);
 __embind_register_constant(9998, 680, 4);
 __embind_register_constant(10020, 680, 3);
 __embind_register_constant(10039, 680, 515);
 __embind_register_constant(10068, 680, 259);
 __embind_register_constant(10096, 680, 4);
 __embind_register_constant(10115, 680, 772);
 __embind_register_constant(10145, 680, 1028);
 __embind_register_constant(10175, 680, 0);
 __embind_register_constant(10206, 680, 1);
 __embind_register_constant(10242, 680, 2);
 __embind_register_constant(10276, 680, 3);
 __embind_register_constant(10314, 680, 0);
 __embind_register_constant(10347, 680, 1);
 __embind_register_constant(10394, 680, 2);
 __embind_register_constant(10436, 680, 3);
 __embind_register_constant(10479, 680, 4);
 __embind_register_constant(10531, 680, 5);
 __embind_register_constant(10582, 680, 6);
 __embind_register_constant(10627, 680, 7);
 __embind_register_constant(10666, 680, 8);
 __embind_register_constant(10711, 680, 9);
 STACKTOP = sp;
 return;
}

function _arParamDecompMat($source, $cpara, $trans) {
 $source = $source | 0;
 $cpara = $cpara | 0;
 $trans = $trans | 0;
 var $102 = 0, $105 = 0, $109 = 0.0, $111 = 0.0, $113 = 0.0, $118 = 0.0, $119 = 0, $127 = 0.0, $128 = 0, $134 = 0.0, $140 = 0.0, $146 = 0.0, $152 = 0.0, $163 = 0.0, $167 = 0.0, $181 = 0, $185 = 0, $189 = 0, $45 = 0.0, $47 = 0.0, $49 = 0.0, $55 = 0.0, $56 = 0, $57 = 0.0, $58 = 0, $60 = 0.0, $61 = 0, $63 = 0.0, $64 = 0, $69 = 0, $71 = 0.0, $73 = 0.0, $75 = 0.0, $80 = 0.0, $81 = 0, $84 = 0.0, $87 = 0.0, $90 = 0.0, $96 = 0.0, $97 = 0, $99 = 0, $Cpara = 0, $r$024 = 0, $r$122 = 0, $r$318 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 96 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $Cpara = sp;
 if (!(+HEAPF64[$source + 88 >> 3] >= 0.0)) {
  $r$122 = 0;
  do {
   HEAPF64[$Cpara + ($r$122 << 5) >> 3] = -+HEAPF64[$source + ($r$122 << 5) >> 3];
   HEAPF64[$Cpara + ($r$122 << 5) + 8 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 8 >> 3];
   HEAPF64[$Cpara + ($r$122 << 5) + 16 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 16 >> 3];
   HEAPF64[$Cpara + ($r$122 << 5) + 24 >> 3] = -+HEAPF64[$source + ($r$122 << 5) + 24 >> 3];
   $r$122 = $r$122 + 1 | 0;
  } while (($r$122 | 0) != 3);
 } else {
  $r$024 = 0;
  do {
   HEAPF64[$Cpara + ($r$024 << 5) >> 3] = +HEAPF64[$source + ($r$024 << 5) >> 3];
   HEAPF64[$Cpara + ($r$024 << 5) + 8 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 8 >> 3];
   HEAPF64[$Cpara + ($r$024 << 5) + 16 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 16 >> 3];
   HEAPF64[$Cpara + ($r$024 << 5) + 24 >> 3] = +HEAPF64[$source + ($r$024 << 5) + 24 >> 3];
   $r$024 = $r$024 + 1 | 0;
  } while (($r$024 | 0) != 3);
 }
 HEAPF64[$cpara >> 3] = 0.0;
 HEAPF64[$cpara + 8 >> 3] = 0.0;
 HEAPF64[$cpara + 16 >> 3] = 0.0;
 HEAPF64[$cpara + 24 >> 3] = 0.0;
 HEAPF64[$cpara + 32 >> 3] = 0.0;
 HEAPF64[$cpara + 40 >> 3] = 0.0;
 HEAPF64[$cpara + 48 >> 3] = 0.0;
 HEAPF64[$cpara + 56 >> 3] = 0.0;
 HEAPF64[$cpara + 64 >> 3] = 0.0;
 HEAPF64[$cpara + 72 >> 3] = 0.0;
 HEAPF64[$cpara + 80 >> 3] = 0.0;
 HEAPF64[$cpara + 88 >> 3] = 0.0;
 $45 = +HEAPF64[$Cpara + 64 >> 3];
 $47 = +HEAPF64[$Cpara + 72 >> 3];
 $49 = +HEAPF64[$Cpara + 80 >> 3];
 $55 = +Math_sqrt(+($45 * $45 + $47 * $47 + $49 * $49));
 $56 = $cpara + 80 | 0;
 HEAPF64[$56 >> 3] = $55;
 $57 = $45 / $55;
 $58 = $trans + 64 | 0;
 HEAPF64[$58 >> 3] = $57;
 $60 = $47 / +HEAPF64[$56 >> 3];
 $61 = $trans + 72 | 0;
 HEAPF64[$61 >> 3] = $60;
 $63 = $49 / +HEAPF64[$56 >> 3];
 $64 = $trans + 80 | 0;
 HEAPF64[$64 >> 3] = $63;
 $69 = $trans + 88 | 0;
 HEAPF64[$69 >> 3] = +HEAPF64[$Cpara + 88 >> 3] / +HEAPF64[$56 >> 3];
 $71 = +HEAPF64[$Cpara + 32 >> 3];
 $73 = +HEAPF64[$Cpara + 40 >> 3];
 $75 = +HEAPF64[$Cpara + 48 >> 3];
 $80 = $57 * $71 + $60 * $73 + $63 * $75;
 $81 = $cpara + 48 | 0;
 HEAPF64[$81 >> 3] = $80;
 $84 = $71 - $80 * +HEAPF64[$58 >> 3];
 $87 = $73 - $80 * +HEAPF64[$61 >> 3];
 $90 = $75 - $80 * +HEAPF64[$64 >> 3];
 $96 = +Math_sqrt(+($84 * $84 + $87 * $87 + $90 * $90));
 $97 = $cpara + 40 | 0;
 HEAPF64[$97 >> 3] = $96;
 $99 = $trans + 32 | 0;
 HEAPF64[$99 >> 3] = $84 / $96;
 $102 = $trans + 40 | 0;
 HEAPF64[$102 >> 3] = $87 / +HEAPF64[$97 >> 3];
 $105 = $trans + 48 | 0;
 HEAPF64[$105 >> 3] = $90 / +HEAPF64[$97 >> 3];
 $109 = +HEAPF64[$Cpara >> 3];
 $111 = +HEAPF64[$Cpara + 8 >> 3];
 $113 = +HEAPF64[$Cpara + 16 >> 3];
 $118 = +HEAPF64[$58 >> 3] * $109 + +HEAPF64[$61 >> 3] * $111 + +HEAPF64[$64 >> 3] * $113;
 $119 = $cpara + 16 | 0;
 HEAPF64[$119 >> 3] = $118;
 $127 = +HEAPF64[$99 >> 3] * $109 + +HEAPF64[$102 >> 3] * $111 + +HEAPF64[$105 >> 3] * $113;
 $128 = $cpara + 8 | 0;
 HEAPF64[$128 >> 3] = $127;
 $134 = $109 - $127 * +HEAPF64[$99 >> 3] - $118 * +HEAPF64[$58 >> 3];
 $140 = $111 - $127 * +HEAPF64[$102 >> 3] - $118 * +HEAPF64[$61 >> 3];
 $146 = $113 - $127 * +HEAPF64[$105 >> 3] - $118 * +HEAPF64[$64 >> 3];
 $152 = +Math_sqrt(+($134 * $134 + $140 * $140 + $146 * $146));
 HEAPF64[$cpara >> 3] = $152;
 HEAPF64[$trans >> 3] = $134 / $152;
 HEAPF64[$trans + 8 >> 3] = $140 / +HEAPF64[$cpara >> 3];
 HEAPF64[$trans + 16 >> 3] = $146 / +HEAPF64[$cpara >> 3];
 $163 = +HEAPF64[$69 >> 3];
 $167 = (+HEAPF64[$Cpara + 56 >> 3] - +HEAPF64[$81 >> 3] * $163) / +HEAPF64[$97 >> 3];
 HEAPF64[$trans + 56 >> 3] = $167;
 HEAPF64[$trans + 24 >> 3] = (+HEAPF64[$Cpara + 24 >> 3] - $167 * +HEAPF64[$128 >> 3] - +HEAPF64[$119 >> 3] * $163) / +HEAPF64[$cpara >> 3];
 $r$318 = 0;
 do {
  $181 = $cpara + ($r$318 << 5) | 0;
  HEAPF64[$181 >> 3] = +HEAPF64[$181 >> 3] / +HEAPF64[$56 >> 3];
  $185 = $cpara + ($r$318 << 5) + 8 | 0;
  HEAPF64[$185 >> 3] = +HEAPF64[$185 >> 3] / +HEAPF64[$56 >> 3];
  $189 = $cpara + ($r$318 << 5) + 16 | 0;
  HEAPF64[$189 >> 3] = +HEAPF64[$189 >> 3] / +HEAPF64[$56 >> 3];
  $r$318 = $r$318 + 1 | 0;
 } while (($r$318 | 0) != 3);
 STACKTOP = sp;
 return 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_19base_nameINSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEEEET_RS9_($agg$result, $s) {
 $agg$result = $agg$result | 0;
 $s = $s | 0;
 var $$$$i$i$i3 = 0, $$0$i$i27 = 0, $$lcssa = 0, $$lcssa32 = 0, $$lcssa33 = 0, $0 = 0, $12 = 0, $13 = 0, $15 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $27 = 0, $31 = 0, $33 = 0, $38 = 0, $42 = 0, $46 = 0, $48 = 0, $56 = 0, $63 = 0, $64 = 0, $7 = 0, $__p$0$i$i26 = 0, $__p$0$ph$i$i = 0, $c$0$ph = 0, $p0$0 = 0, $p0$1 = 0, $pe$0 = 0, $pe$0$ph = 0, $pe$1 = 0, $pe$1$pn = 0, label = 0;
 $0 = HEAP8[$s >> 0] | 0;
 $2 = ($0 & 1) == 0;
 $7 = $2 ? ($0 & 255) >>> 1 : HEAP32[$s + 4 >> 2] | 0;
 L1 : do if (!$7) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($agg$result, $s); else {
  $12 = $2 ? $s + 1 | 0 : HEAP32[$s + 8 >> 2] | 0;
  $13 = $7 >>> 0 > 11;
  $15 = _memcmp($12, 12846, $13 ? 11 : $7) | 0;
  if (!((($15 | 0) == 0 ? ($7 >>> 0 < 11 ? -1 : $13 & 1) : $15) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13450, 70);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13521, 12);
   break;
  }
  $20 = $7 >>> 0 > 12;
  $21 = $20 ? 12 : $7;
  $22 = _memcmp($12, 12858, $21) | 0;
  $$$$i$i$i3 = $7 >>> 0 < 12 ? -1 : $20 & 1;
  if (!((($22 | 0) == 0 ? $$$$i$i$i3 : $22) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13534, 49);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13584, 13);
   break;
  }
  $27 = _memcmp($12, 12871, $21) | 0;
  if (!((($27 | 0) == 0 ? $$$$i$i$i3 : $27) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13598, 49);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13648, 13);
   break;
  }
  $31 = $7 >>> 0 > 13;
  $33 = _memcmp($12, 12884, $31 ? 13 : $7) | 0;
  if (!((($33 | 0) == 0 ? ($7 >>> 0 < 13 ? -1 : $31 & 1) : $33) | 0)) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($s, 13662, 50);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($agg$result, 13713, 14);
   break;
  }
  $38 = $12 + $7 | 0;
  L16 : do if ((HEAP8[$12 + ($7 + -1) >> 0] | 0) == 62) {
   $c$0$ph = 1;
   $pe$0$ph = $38;
   L17 : while (1) {
    $pe$0 = $pe$0$ph;
    L19 : while (1) {
     $42 = $pe$0 + -1 | 0;
     if (($42 | 0) == ($12 | 0)) break L17;
     $46 = $pe$0 + -2 | 0;
     switch (HEAP8[$46 >> 0] | 0) {
     case 60:
      {
       $$lcssa = $46;
       $$lcssa32 = $42;
       label = 16;
       break L19;
       break;
      }
     case 62:
      {
       $$lcssa33 = $42;
       label = 17;
       break L19;
       break;
      }
     default:
      $pe$0 = $42;
     }
    }
    if ((label | 0) == 16) {
     label = 0;
     $48 = $c$0$ph + -1 | 0;
     if (!$48) {
      $pe$1 = $$lcssa;
      break L16;
     } else {
      $c$0$ph = $48;
      $pe$0$ph = $$lcssa32;
      continue;
     }
    } else if ((label | 0) == 17) {
     label = 0;
     $c$0$ph = $c$0$ph + 1 | 0;
     $pe$0$ph = $$lcssa33;
     continue;
    }
   }
   HEAP32[$agg$result >> 2] = 0;
   HEAP32[$agg$result + 4 >> 2] = 0;
   HEAP32[$agg$result + 8 >> 2] = 0;
   break L1;
  } else $pe$1 = $38; while (0);
  $pe$1$pn = $pe$1;
  while (1) {
   $p0$0 = $pe$1$pn + -1 | 0;
   if (($p0$0 | 0) == ($12 | 0)) {
    $p0$1 = $12;
    break;
   }
   if ((HEAP8[$p0$0 >> 0] | 0) == 58) {
    $p0$1 = $pe$1$pn;
    break;
   } else $pe$1$pn = $p0$0;
  }
  $56 = $pe$1 - $p0$1 | 0;
  if ($56 >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($agg$result);
  if ($56 >>> 0 < 11) {
   HEAP8[$agg$result >> 0] = $56 << 1;
   $__p$0$ph$i$i = $agg$result + 1 | 0;
  } else {
   $63 = $56 + 16 & -16;
   $64 = _malloc($63) | 0;
   HEAP32[$agg$result + 8 >> 2] = $64;
   HEAP32[$agg$result >> 2] = $63 | 1;
   HEAP32[$agg$result + 4 >> 2] = $56;
   $__p$0$ph$i$i = $64;
  }
  if (($p0$1 | 0) != ($pe$1 | 0)) {
   $$0$i$i27 = $p0$1;
   $__p$0$i$i26 = $__p$0$ph$i$i;
   while (1) {
    HEAP8[$__p$0$i$i26 >> 0] = HEAP8[$$0$i$i27 >> 0] | 0;
    $$0$i$i27 = $$0$i$i27 + 1 | 0;
    if (($$0$i$i27 | 0) == ($pe$1 | 0)) break; else $__p$0$i$i26 = $__p$0$i$i26 + 1 | 0;
   }
  }
  HEAP8[$__p$0$ph$i$i + $56 >> 0] = 0;
 } while (0);
 return;
}

function _trinkle($head, $width, $cmp, $pp, $pshift, $trusty, $lp) {
 $head = $head | 0;
 $width = $width | 0;
 $cmp = $cmp | 0;
 $pp = $pp | 0;
 $pshift = $pshift | 0;
 $trusty = $trusty | 0;
 $lp = $lp | 0;
 var $$0$i = 0, $$0$lcssa = 0, $$0$lcssa49 = 0, $$01162 = 0, $$01162$phi = 0, $$02$i$i = 0, $$02$i3$i = 0, $$02$lcssa = 0, $$02$lcssa51 = 0, $$02964 = 0, $$03$lcssa = 0, $$03865 = 0, $$lcssa = 0, $$lcssa75 = 0, $0 = 0, $10 = 0, $17 = 0, $18 = 0, $2 = 0, $24 = 0, $26 = 0, $27 = 0, $3 = 0, $31 = 0, $37 = 0, $40 = 0, $47 = 0, $49 = 0, $51 = 0, $54 = 0, $57 = 0, $58 = 0, $65 = 0, $ar = 0, $i$0$lcssa = 0, $i$0$lcssa50 = 0, $i$01063 = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ar = sp;
 $0 = HEAP32[$pp >> 2] | 0;
 $2 = HEAP32[$pp + 4 >> 2] | 0;
 HEAP32[$ar >> 2] = $head;
 $3 = 0 - $width | 0;
 L1 : do if (($2 | 0) != 0 | ($0 | 0) != 1) {
  $10 = $head + (0 - (HEAP32[$lp + ($pshift << 2) >> 2] | 0)) | 0;
  if ((FUNCTION_TABLE_iii[$cmp & 15]($10, $head) | 0) < 1) {
   $$0$lcssa = $head;
   $$02$lcssa = $pshift;
   $$03$lcssa = $trusty;
   $i$0$lcssa = 1;
   label = 19;
  } else {
   $$01162 = $head;
   $$02964 = $pshift;
   $$03865 = ($trusty | 0) == 0;
   $18 = $10;
   $27 = $0;
   $37 = $2;
   $i$01063 = 1;
   while (1) {
    if ($$03865 & ($$02964 | 0) > 1) {
     $17 = HEAP32[$lp + ($$02964 + -2 << 2) >> 2] | 0;
     if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + $3 | 0, $18) | 0) > -1) {
      $$0$lcssa49 = $$01162;
      $$02$lcssa51 = $$02964;
      $i$0$lcssa50 = $i$01063;
      label = 20;
      break L1;
     }
     if ((FUNCTION_TABLE_iii[$cmp & 15]($$01162 + (0 - ($17 + $width)) | 0, $18) | 0) > -1) {
      $$0$lcssa49 = $$01162;
      $$02$lcssa51 = $$02964;
      $i$0$lcssa50 = $i$01063;
      label = 20;
      break L1;
     }
    }
    $24 = $i$01063 + 1 | 0;
    HEAP32[$ar + ($i$01063 << 2) >> 2] = $18;
    $26 = $27 + -1 | 0;
    do if (!$26) {
     $49 = 32;
     label = 16;
    } else {
     if (!($26 & 1)) {
      $$02$i$i = $26;
      $nTrailingZeros$03$i$i = 0;
      while (1) {
       $31 = $nTrailingZeros$03$i$i + 1 | 0;
       $$02$i$i = $$02$i$i >>> 1;
       if ($$02$i$i & 1) {
        $$lcssa = $31;
        break;
       } else $nTrailingZeros$03$i$i = $31;
      }
      if (!$$lcssa) label = 11; else $47 = $$lcssa;
     } else label = 11;
     if ((label | 0) == 11) {
      label = 0;
      if (!$37) {
       $49 = 64;
       label = 16;
       break;
      }
      if (!($37 & 1)) {
       $$02$i3$i = $37;
       $nTrailingZeros$03$i2$i = 0;
      } else {
       $$0$i = 0;
       $51 = $27;
       $54 = $37;
       $58 = 0;
       break;
      }
      while (1) {
       $40 = $nTrailingZeros$03$i2$i + 1 | 0;
       $$02$i3$i = $$02$i3$i >>> 1;
       if ($$02$i3$i & 1) {
        $$lcssa75 = $40;
        $nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i;
        break;
       } else $nTrailingZeros$03$i2$i = $40;
      }
      if (!$$lcssa75) {
       $$0$i = 0;
       $51 = $27;
       $54 = $37;
       $58 = 0;
       break;
      } else $47 = $nTrailingZeros$03$i2$i$lcssa + 33 | 0;
     }
     if ($47 >>> 0 > 31) {
      $49 = $47;
      label = 16;
     } else {
      $$0$i = $47;
      $51 = $27;
      $54 = $37;
      $58 = $47;
     }
    } while (0);
    if ((label | 0) == 16) {
     label = 0;
     $$0$i = $49 + -32 | 0;
     $51 = $37;
     $54 = 0;
     $58 = $49;
    }
    $27 = $54 << 32 - $$0$i | $51 >>> $$0$i;
    $37 = $54 >>> $$0$i;
    $57 = $58 + $$02964 | 0;
    if (!(($37 | 0) != 0 | ($27 | 0) != 1)) {
     $$0$lcssa49 = $18;
     $$02$lcssa51 = $57;
     $i$0$lcssa50 = $24;
     label = 20;
     break L1;
    }
    $65 = $18 + (0 - (HEAP32[$lp + ($57 << 2) >> 2] | 0)) | 0;
    if ((FUNCTION_TABLE_iii[$cmp & 15]($65, HEAP32[$ar >> 2] | 0) | 0) < 1) {
     $$0$lcssa = $18;
     $$02$lcssa = $57;
     $$03$lcssa = 0;
     $i$0$lcssa = $24;
     label = 19;
     break;
    } else {
     $$01162$phi = $18;
     $$02964 = $57;
     $$03865 = 1;
     $18 = $65;
     $i$01063 = $24;
     $$01162 = $$01162$phi;
    }
   }
  }
 } else {
  $$0$lcssa = $head;
  $$02$lcssa = $pshift;
  $$03$lcssa = $trusty;
  $i$0$lcssa = 1;
  label = 19;
 } while (0);
 if ((label | 0) == 19) if (!$$03$lcssa) {
  $$0$lcssa49 = $$0$lcssa;
  $$02$lcssa51 = $$02$lcssa;
  $i$0$lcssa50 = $i$0$lcssa;
  label = 20;
 }
 if ((label | 0) == 20) {
  _cycle($width, $ar, $i$0$lcssa50);
  _sift($$0$lcssa49, $width, $cmp, $$02$lcssa51, $lp);
 }
 STACKTOP = sp;
 return;
}

function _arMatrixPCA($input, $evec, $ev, $mean) {
 $input = $input | 0;
 $evec = $evec | 0;
 $ev = $ev | 0;
 $mean = $mean | 0;
 var $$0 = 0, $1 = 0, $14 = 0, $17 = 0, $20 = 0, $23 = 0.0, $25 = 0, $27 = 0, $3 = 0, $32 = 0, $35 = 0, $36 = 0.0, $37 = 0, $46 = 0, $5 = 0, $52 = 0, $53 = 0, $65 = 0, $70 = 0, $71 = 0, $73 = 0, $75 = 0, $78 = 0.0, $81 = 0, $exitcond3$i29 = 0, $i$0$i322 = 0, $i$0$i42 = 0, $i$015 = 0, $i$1$i38 = 0, $i$113 = 0, $i$2$i26 = 0, $i$211 = 0, $j$0$i32 = 0, $j$0$i619 = 0, $m$0$i221 = 0, $m$0$i37 = 0, $m$1$i31 = 0, $m$1$i518 = 0, $smax$i = 0, $sum$0$lcssa = 0.0, $sum$012 = 0.0, $v$0$i30 = 0, $v$0$i417 = 0;
 $1 = HEAP32[$input + 4 >> 2] | 0;
 $3 = HEAP32[$input + 8 >> 2] | 0;
 $5 = ($1 | 0) < ($3 | 0) ? $1 : $3;
 L1 : do if (($1 | 0) < 2 | ($3 | 0) < 2) $$0 = -1; else if ((HEAP32[$evec + 8 >> 2] | 0) == ($3 | 0)) if ((HEAP32[$evec + 4 >> 2] | 0) == ($5 | 0)) {
  $14 = $ev + 4 | 0;
  if ((HEAP32[$14 >> 2] | 0) == ($5 | 0)) {
   $17 = $mean + 4 | 0;
   if ((HEAP32[$17 >> 2] | 0) == ($3 | 0)) {
    $20 = _arMatrixAllocDup($input) | 0;
    if (!$20) $$0 = -1; else {
     $23 = +Math_sqrt(+(+($1 | 0)));
     $25 = HEAP32[$20 + 4 >> 2] | 0;
     $27 = HEAP32[$20 + 8 >> 2] | 0;
     if (!(($25 | 0) < 1 | ($27 | 0) < 1)) if ((HEAP32[$17 >> 2] | 0) == ($27 | 0)) {
      if ($27) {
       $32 = HEAP32[$mean >> 2] | 0;
       $i$0$i42 = 0;
       do {
        HEAPF64[$32 + ($i$0$i42 << 3) >> 3] = 0.0;
        $i$0$i42 = $i$0$i42 + 1 | 0;
       } while (($i$0$i42 | 0) != ($27 | 0));
      }
      $35 = HEAP32[$20 >> 2] | 0;
      if ($25) {
       $exitcond3$i29 = ($27 | 0) == 0;
       $i$1$i38 = 0;
       $m$0$i37 = $35;
       while (1) {
        if (!$exitcond3$i29) {
         $j$0$i32 = 0;
         $m$1$i31 = $m$0$i37;
         $v$0$i30 = HEAP32[$mean >> 2] | 0;
         while (1) {
          HEAPF64[$v$0$i30 >> 3] = +HEAPF64[$m$1$i31 >> 3] + +HEAPF64[$v$0$i30 >> 3];
          $j$0$i32 = $j$0$i32 + 1 | 0;
          if (($j$0$i32 | 0) == ($27 | 0)) break; else {
           $m$1$i31 = $m$1$i31 + 8 | 0;
           $v$0$i30 = $v$0$i30 + 8 | 0;
          }
         }
        }
        $i$1$i38 = $i$1$i38 + 1 | 0;
        if (($i$1$i38 | 0) == ($25 | 0)) break; else $m$0$i37 = $m$0$i37 + ($27 << 3) | 0;
       }
      }
      $36 = +($25 | 0);
      if ($27) {
       $37 = HEAP32[$mean >> 2] | 0;
       $i$2$i26 = 0;
       do {
        $46 = $37 + ($i$2$i26 << 3) | 0;
        HEAPF64[$46 >> 3] = +HEAPF64[$46 >> 3] / $36;
        $i$2$i26 = $i$2$i26 + 1 | 0;
       } while (($i$2$i26 | 0) != ($27 | 0));
      }
      $smax$i = ($27 | 0) > 0 ? $27 : 0;
      if (($25 | 0) > 0) {
       $52 = ($27 | 0) > 0;
       $i$0$i322 = 0;
       $m$0$i221 = $35;
       while (1) {
        if ($52) {
         $j$0$i619 = 0;
         $m$1$i518 = $m$0$i221;
         $v$0$i417 = HEAP32[$mean >> 2] | 0;
         while (1) {
          HEAPF64[$m$1$i518 >> 3] = +HEAPF64[$m$1$i518 >> 3] - +HEAPF64[$v$0$i417 >> 3];
          $j$0$i619 = $j$0$i619 + 1 | 0;
          if (($j$0$i619 | 0) >= ($27 | 0)) break; else {
           $m$1$i518 = $m$1$i518 + 8 | 0;
           $v$0$i417 = $v$0$i417 + 8 | 0;
          }
         }
        }
        $i$0$i322 = $i$0$i322 + 1 | 0;
        if (($i$0$i322 | 0) >= ($25 | 0)) break; else $m$0$i221 = $m$0$i221 + ($smax$i << 3) | 0;
       }
      }
      $53 = Math_imul($3, $1) | 0;
      if (($53 | 0) > 0) {
       $i$015 = 0;
       do {
        $65 = $35 + ($i$015 << 3) | 0;
        HEAPF64[$65 >> 3] = +HEAPF64[$65 >> 3] / $23;
        $i$015 = $i$015 + 1 | 0;
       } while (($i$015 | 0) < ($53 | 0));
      }
      $70 = _PCA($20, $evec, $ev) | 0;
      _arMatrixFree($20) | 0;
      $71 = HEAP32[$14 >> 2] | 0;
      if (($71 | 0) > 0) {
       $73 = HEAP32[$ev >> 2] | 0;
       $i$113 = 0;
       $sum$012 = 0.0;
       while (1) {
        $78 = $sum$012 + +HEAPF64[$73 + ($i$113 << 3) >> 3];
        $i$113 = $i$113 + 1 | 0;
        if (($i$113 | 0) >= ($71 | 0)) {
         $sum$0$lcssa = $78;
         break;
        } else $sum$012 = $78;
       }
      } else $sum$0$lcssa = 0.0;
      if (($71 | 0) <= 0) {
       $$0 = $70;
       break;
      }
      $75 = HEAP32[$ev >> 2] | 0;
      $i$211 = 0;
      while (1) {
       $81 = $75 + ($i$211 << 3) | 0;
       HEAPF64[$81 >> 3] = +HEAPF64[$81 >> 3] / $sum$0$lcssa;
       $i$211 = $i$211 + 1 | 0;
       if (($i$211 | 0) >= ($71 | 0)) {
        $$0 = $70;
        break L1;
       }
      }
     }
     _arMatrixFree($20) | 0;
     $$0 = -1;
    }
   } else $$0 = -1;
  } else $$0 = -1;
 } else $$0 = -1; else $$0 = -1; while (0);
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_126parse_base_unresolved_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $$0$i = 0, $10 = 0, $12 = 0, $14 = 0, $15 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $4 = 0, $42 = 0, $48 = 0, $52 = 0, $54 = 0, $56 = 0, $58 = 0, $59 = 0, $67 = 0, $68 = 0, $69 = 0, $70 = 0, $73 = 0, $75 = 0, $9 = 0, $args = 0, $args3 = 0, $t$0$i = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $args = sp + 12 | 0;
 $args3 = sp;
 L1 : do if (($last - $first | 0) > 1) {
  $4 = HEAP8[$first >> 0] | 0;
  switch ($4 << 24 >> 24) {
  case 100:
  case 111:
   {
    if ((HEAP8[$first + 1 >> 0] | 0) == 110) {
     $9 = $first + 2 | 0;
     if ($4 << 24 >> 24 == 111) {
      $10 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0;
      if (($10 | 0) == ($9 | 0)) {
       $$0 = $first;
       break L1;
      }
      $12 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($10, $last, $db) | 0;
      if (($12 | 0) == ($10 | 0)) {
       $$0 = $10;
       break L1;
      }
      $14 = $db + 4 | 0;
      $15 = HEAP32[$14 >> 2] | 0;
      if ((($15 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) {
       $$0 = $12;
       break L1;
      }
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $15 + -24 | 0);
      $23 = HEAP32[$14 >> 2] | 0;
      $24 = $23 + -24 | 0;
      $26 = $23;
      do {
       $25 = $26 + -24 | 0;
       HEAP32[$14 >> 2] = $25;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($25);
       $26 = HEAP32[$14 >> 2] | 0;
      } while (($26 | 0) != ($24 | 0));
      $29 = HEAP8[$args >> 0] | 0;
      $31 = ($29 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($23 + -48 | 0, $31 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $31 ? ($29 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
      $$0 = $12;
      break L1;
     }
     if (($9 | 0) == ($last | 0)) $$0$i = $last; else {
      $42 = __ZN10__cxxabiv112_GLOBAL__N_121parse_unresolved_typeINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0;
      if (($42 | 0) == ($9 | 0)) $t$0$i = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($9, $last, $db) | 0; else $t$0$i = $42;
      if (($t$0$i | 0) == ($9 | 0)) $$0$i = $9; else {
       $48 = HEAP32[$db + 4 >> 2] | 0;
       if ((HEAP32[$db >> 2] | 0) == ($48 | 0)) $$0$i = $9; else {
        __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($48 + -24 | 0, 0, 12928) | 0;
        $$0$i = $t$0$i;
       }
      }
     }
     STACKTOP = sp;
     return (($$0$i | 0) == ($9 | 0) ? $first : $$0$i) | 0;
    }
    break;
   }
  default:
   {}
  }
  $52 = __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
  if (($52 | 0) == ($first | 0)) {
   $54 = __ZN10__cxxabiv112_GLOBAL__N_119parse_operator_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   if (($54 | 0) == ($first | 0)) $$0 = $first; else {
    $56 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($54, $last, $db) | 0;
    if (($56 | 0) == ($54 | 0)) $$0 = $54; else {
     $58 = $db + 4 | 0;
     $59 = HEAP32[$58 >> 2] | 0;
     if ((($59 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $56; else {
      __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args3, $59 + -24 | 0);
      $67 = HEAP32[$58 >> 2] | 0;
      $68 = $67 + -24 | 0;
      $70 = $67;
      do {
       $69 = $70 + -24 | 0;
       HEAP32[$58 >> 2] = $69;
       __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($69);
       $70 = HEAP32[$58 >> 2] | 0;
      } while (($70 | 0) != ($68 | 0));
      $73 = HEAP8[$args3 >> 0] | 0;
      $75 = ($73 & 1) == 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($67 + -48 | 0, $75 ? $args3 + 1 | 0 : HEAP32[$args3 + 8 >> 2] | 0, $75 ? ($73 & 255) >>> 1 : HEAP32[$args3 + 4 >> 2] | 0) | 0;
      __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args3);
      $$0 = $56;
     }
    }
   }
  } else $$0 = $52;
 } else $$0 = $first; while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arParamLoad($filename, $num, $param, $varargs) {
 $filename = $filename | 0;
 $num = $num | 0;
 $param = $param | 0;
 $varargs = $varargs | 0;
 var $$pre$phi14Z2D = 0, $11 = 0, $14 = 0, $15 = 0, $18 = 0, $21 = 0, $23 = 0, $26 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0, $36 = 0, $43 = 0, $44 = 0, $5 = 0, $53 = 0.0, $8 = 0, $ap = 0, $dist_function_version$04 = 0, $i$0 = 0, $i$0$lcssa = 0, $i$119 = 0, $param_wasRead = 0, $ret$06 = 0, $ret$09 = 0, $vararg_buffer = 0, $vararg_buffer13 = 0, $vararg_buffer15 = 0, $vararg_buffer18 = 0, $vararg_buffer2 = 0, $vararg_buffer6 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 256 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer18 = sp + 232 | 0;
 $vararg_buffer15 = sp + 224 | 0;
 $vararg_buffer13 = sp + 216 | 0;
 $vararg_buffer9 = sp + 208 | 0;
 $vararg_buffer6 = sp + 200 | 0;
 $vararg_buffer2 = sp + 192 | 0;
 $vararg_buffer = sp + 184 | 0;
 $ap = sp + 240 | 0;
 $param_wasRead = sp;
 do if (($filename | 0) != 0 & ($num | 0) > 0 & ($param | 0) != 0) {
  $3 = _fopen($filename, 4854) | 0;
  if (!$3) {
   $5 = ___errno_location() | 0;
   HEAP32[$vararg_buffer >> 2] = HEAP32[$5 >> 2];
   HEAP32[$vararg_buffer + 4 >> 2] = $filename;
   _arLog(3, 4857, $vararg_buffer);
   $8 = _strerror(HEAP32[$5 >> 2] | 0) | 0;
   HEAP32[$vararg_buffer2 >> 2] = 13835;
   HEAP32[$vararg_buffer2 + 4 >> 2] = $8;
   _arLog(3, 5361, $vararg_buffer2);
   $ret$06 = -1;
   break;
  }
  _fseek($3, 0, 2) | 0;
  L6 : do if (!(_ferror($3) | 0)) {
   $15 = _ftell($3) | 0;
   _rewind($3);
   $i$0 = 0;
   while (1) {
    if (($i$0 | 0) >= 4) {
     $i$0$lcssa = $i$0;
     label = 9;
     break;
    }
    $18 = HEAP32[2012 + ($i$0 << 3) + 4 >> 2] | 0;
    $21 = $i$0 + 1 | 0;
    if (!(($15 | 0) % ($18 | 0) | 0)) {
     $23 = $18;
     $dist_function_version$04 = $21;
     break;
    } else $i$0 = $21;
   }
   do if ((label | 0) == 9) if (($i$0$lcssa | 0) == 4) {
    _arLog(3, 4971, $vararg_buffer13);
    $ret$09 = -1;
    break L6;
   } else {
    $23 = HEAP32[2012 + (0 << 3) + 4 >> 2] | 0;
    $dist_function_version$04 = 0;
    break;
   } while (0);
   if ((_fread($param_wasRead, $23, 1, $3) | 0) != 1) {
    $26 = ___errno_location() | 0;
    HEAP32[$vararg_buffer15 >> 2] = HEAP32[$26 >> 2];
    _arLog(3, 5051, $vararg_buffer15);
    $29 = _strerror(HEAP32[$26 >> 2] | 0) | 0;
    HEAP32[$vararg_buffer18 >> 2] = 13835;
    HEAP32[$vararg_buffer18 + 4 >> 2] = $29;
    _arLog(3, 5361, $vararg_buffer18);
    $ret$09 = -1;
    break;
   }
   $30 = $param_wasRead + 176 | 0;
   HEAP32[$30 >> 2] = $dist_function_version$04;
   _byteswap($param_wasRead);
   $31 = ($dist_function_version$04 | 0) == 1;
   $32 = $param_wasRead + 120 | 0;
   if ($31) {
    $33 = +HEAPF64[$32 >> 3];
    $34 = $param_wasRead + 128 | 0;
    HEAPF64[$32 >> 3] = +HEAPF64[$34 >> 3];
    HEAPF64[$34 >> 3] = $33;
    $$pre$phi14Z2D = $34;
   } else $$pre$phi14Z2D = $param_wasRead + 128 | 0;
   _memcpy($param | 0, $param_wasRead | 0, 184) | 0;
   HEAP32[$ap >> 2] = $varargs;
   $36 = $param + 176 | 0;
   if (($num | 0) > 1) {
    $i$119 = 1;
    while (1) {
     $43 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
     $44 = HEAP32[$43 >> 2] | 0;
     HEAP32[$ap >> 2] = $43 + 4;
     HEAP32[$44 + 176 >> 2] = HEAP32[$36 >> 2];
     if ((_fread($param_wasRead, HEAP32[2012 + ((HEAP32[$36 >> 2] | 0) + -1 << 3) + 4 >> 2] | 0, 1, $3) | 0) != 1) {
      $ret$09 = -1;
      break L6;
     }
     HEAP32[$30 >> 2] = $dist_function_version$04;
     _byteswap($param_wasRead);
     if ($31) {
      $53 = +HEAPF64[$32 >> 3];
      HEAPF64[$32 >> 3] = +HEAPF64[$$pre$phi14Z2D >> 3];
      HEAPF64[$$pre$phi14Z2D >> 3] = $53;
     }
     _memcpy($44 | 0, $param_wasRead | 0, 184) | 0;
     $i$119 = $i$119 + 1 | 0;
     if (($i$119 | 0) >= ($num | 0)) {
      $ret$09 = 0;
      break;
     }
    }
   } else $ret$09 = 0;
  } else {
   $11 = ___errno_location() | 0;
   HEAP32[$vararg_buffer6 >> 2] = HEAP32[$11 >> 2];
   _arLog(3, 4926, $vararg_buffer6);
   $14 = _strerror(HEAP32[$11 >> 2] | 0) | 0;
   HEAP32[$vararg_buffer9 >> 2] = 13835;
   HEAP32[$vararg_buffer9 + 4 >> 2] = $14;
   _arLog(3, 5361, $vararg_buffer9);
   $ret$09 = -1;
  } while (0);
  _fclose($3) | 0;
  $ret$06 = $ret$09;
 } else $ret$06 = -1; while (0);
 STACKTOP = sp;
 return $ret$06 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_123parse_prefix_expressionINS0_2DbEEEPKcS4_S4_RKNT_6StringERS5_($first, $last, $op, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $op = $op | 0;
 $db = $db | 0;
 var $$04 = 0, $$pre$i$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $13 = 0, $15 = 0, $2 = 0, $25 = 0, $28 = 0, $3 = 0, $35 = 0, $37 = 0, $4 = 0, $40 = 0, $44 = 0, $47 = 0, $52 = 0, $53 = 0, $56 = 0, $57 = 0, $59 = 0, $60 = 0, $69 = 0, $7 = 0, $72 = 0, $77 = 0, $8 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 36 | 0;
 $1 = sp + 24 | 0;
 $2 = sp + 12 | 0;
 $3 = sp;
 $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
 if (($4 | 0) == ($first | 0)) $$04 = $first; else {
  $7 = $db + 4 | 0;
  $8 = HEAP32[$7 >> 2] | 0;
  if ((HEAP32[$db >> 2] | 0) == ($8 | 0)) $$04 = $first; else {
   $10 = $8 + -24 | 0;
   __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($2, $op, 12714);
   __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, (HEAP32[$7 >> 2] | 0) + -24 | 0);
   $13 = HEAP8[$3 >> 0] | 0;
   $15 = ($13 & 1) == 0;
   $25 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($2, $15 ? $3 + 1 | 0 : HEAP32[$3 + 8 >> 2] | 0, $15 ? ($13 & 255) >>> 1 : HEAP32[$3 + 4 >> 2] | 0) | 0;
   HEAP32[$1 >> 2] = HEAP32[$25 >> 2];
   HEAP32[$1 + 4 >> 2] = HEAP32[$25 + 4 >> 2];
   HEAP32[$1 + 8 >> 2] = HEAP32[$25 + 8 >> 2];
   HEAP32[$25 >> 2] = 0;
   HEAP32[$25 + 4 >> 2] = 0;
   HEAP32[$25 + 8 >> 2] = 0;
   $28 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($1, 12619) | 0;
   HEAP32[$0 >> 2] = HEAP32[$28 >> 2];
   HEAP32[$0 + 4 >> 2] = HEAP32[$28 + 4 >> 2];
   HEAP32[$0 + 8 >> 2] = HEAP32[$28 + 8 >> 2];
   HEAP32[$28 >> 2] = 0;
   HEAP32[$28 + 4 >> 2] = 0;
   HEAP32[$28 + 8 >> 2] = 0;
   do if (!(HEAP8[$10 >> 0] & 1)) {
    HEAP8[$10 + 1 >> 0] = 0;
    HEAP8[$10 >> 0] = 0;
   } else {
    $35 = $8 + -16 | 0;
    HEAP8[HEAP32[$35 >> 2] >> 0] = 0;
    $37 = $8 + -20 | 0;
    HEAP32[$37 >> 2] = 0;
    $$pre$i$i$i = HEAP8[$10 >> 0] | 0;
    if (!($$pre$i$i$i & 1)) {
     $44 = $$pre$i$i$i;
     $53 = 10;
    } else {
     $40 = HEAP32[$10 >> 2] | 0;
     $44 = $40 & 255;
     $53 = ($40 & -2) + -1 | 0;
    }
    if (!($44 & 1)) {
     $47 = ($44 & 255) >>> 1;
     if (($44 & 255) < 22) {
      $52 = 10;
      $72 = $47;
      $77 = 1;
     } else {
      $52 = ($47 + 16 & 240) + -1 | 0;
      $72 = $47;
      $77 = 1;
     }
    } else {
     $52 = 10;
     $72 = 0;
     $77 = 0;
    }
    if (($52 | 0) != ($53 | 0)) {
     if (($52 | 0) == 10) {
      $59 = $10 + 1 | 0;
      $60 = HEAP32[$35 >> 2] | 0;
      if ($77) {
       _memcpy($59 | 0, $60 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0;
       _free($60);
      } else {
       HEAP8[$59 >> 0] = HEAP8[$60 >> 0] | 0;
       _free($60);
      }
      HEAP8[$10 >> 0] = $72 << 1;
      break;
     }
     $56 = $52 + 1 | 0;
     $57 = _malloc($56) | 0;
     if (!($52 >>> 0 <= $53 >>> 0 & ($57 | 0) == 0)) {
      if ($77) _memcpy($57 | 0, $10 + 1 | 0, (($44 & 255) >>> 1) + 1 | 0) | 0; else {
       $69 = HEAP32[$35 >> 2] | 0;
       HEAP8[$57 >> 0] = HEAP8[$69 >> 0] | 0;
       _free($69);
      }
      HEAP32[$10 >> 2] = $56 | 1;
      HEAP32[$37 >> 2] = $72;
      HEAP32[$35 >> 2] = $57;
     }
    }
   } while (0);
   HEAP32[$10 >> 2] = HEAP32[$0 >> 2];
   HEAP32[$10 + 4 >> 2] = HEAP32[$0 + 4 >> 2];
   HEAP32[$10 + 8 >> 2] = HEAP32[$0 + 8 >> 2];
   HEAP32[$0 >> 2] = 0;
   HEAP32[$0 + 4 >> 2] = 0;
   HEAP32[$0 + 8 >> 2] = 0;
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($0);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
   $$04 = $4;
  }
 }
 STACKTOP = sp;
 return $$04 | 0;
}

function _icpPoint($handle, $data, $initMatXw2Xc, $matXw2Xc, $err) {
 $handle = $handle | 0;
 $data = $data | 0;
 $initMatXw2Xc = $initMatXw2Xc | 0;
 $matXw2Xc = $matXw2Xc | 0;
 $err = $err | 0;
 var $$0 = 0, $$lcssa = 0, $$lcssa28 = 0, $$lcssa50 = 0.0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $28 = 0, $34 = 0, $38 = 0.0, $4 = 0, $42 = 0.0, $46 = 0.0, $47 = 0, $52 = 0, $55 = 0.0, $7 = 0, $9 = 0, $U = 0, $dS = 0, $err0$0 = 0.0, $err1$0$lcssa = 0.0, $err1$033 = 0.0, $i$1 = 0, $j$042 = 0, $j$134 = 0, $j$238 = 0, $matXw2U = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 176 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 168 | 0;
 $vararg_buffer = sp + 160 | 0;
 $U = sp + 48 | 0;
 $matXw2U = sp + 64 | 0;
 $dS = sp;
 $0 = $data + 8 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 do if (($1 | 0) < 3) $$0 = -1; else {
  $4 = _malloc($1 * 96 | 0) | 0;
  if (!$4) {
   _arLog(3, 5109, $vararg_buffer);
   $$0 = -1;
   break;
  }
  $7 = _malloc($1 << 4) | 0;
  if (!$7) {
   _arLog(3, 5109, $vararg_buffer1);
   _free($4);
   $$0 = -1;
   break;
  } else $j$042 = 0;
  do {
   HEAPF64[$matXw2Xc + ($j$042 << 5) >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) >> 3];
   HEAPF64[$matXw2Xc + ($j$042 << 5) + 8 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 8 >> 3];
   HEAPF64[$matXw2Xc + ($j$042 << 5) + 16 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 16 >> 3];
   HEAPF64[$matXw2Xc + ($j$042 << 5) + 24 >> 3] = +HEAPF64[$initMatXw2Xc + ($j$042 << 5) + 24 >> 3];
   $j$042 = $j$042 + 1 | 0;
  } while (($j$042 | 0) != 3);
  $9 = $data + 4 | 0;
  $10 = $U + 8 | 0;
  $11 = $handle + 104 | 0;
  $12 = $handle + 120 | 0;
  $13 = $handle + 112 | 0;
  $14 = $handle + 96 | 0;
  $err0$0 = 0.0;
  $i$1 = 0;
  L11 : while (1) {
   _arUtilMatMul($handle, $matXw2Xc, $matXw2U) | 0;
   $28 = HEAP32[$0 >> 2] | 0;
   if (($28 | 0) > 0) {
    $err1$033 = 0.0;
    $j$134 = 0;
    while (1) {
     if ((_icpGetU_from_X_by_MatX2U($U, $matXw2U, (HEAP32[$9 >> 2] | 0) + ($j$134 * 24 | 0) | 0) | 0) < 0) {
      label = 10;
      break L11;
     }
     $34 = HEAP32[$data >> 2] | 0;
     $38 = +HEAPF64[$34 + ($j$134 << 4) >> 3] - +HEAPF64[$U >> 3];
     $42 = +HEAPF64[$34 + ($j$134 << 4) + 8 >> 3] - +HEAPF64[$10 >> 3];
     $46 = $err1$033 + ($38 * $38 + $42 * $42);
     $47 = $j$134 << 1;
     HEAPF64[$7 + ($47 << 3) >> 3] = $38;
     HEAPF64[$7 + (($47 | 1) << 3) >> 3] = $42;
     $j$134 = $j$134 + 1 | 0;
     $52 = HEAP32[$0 >> 2] | 0;
     if (($j$134 | 0) >= ($52 | 0)) {
      $$lcssa = $52;
      $err1$0$lcssa = $46;
      break;
     } else $err1$033 = $46;
    }
   } else {
    $$lcssa = $28;
    $err1$0$lcssa = 0.0;
   }
   $55 = $err1$0$lcssa / +($$lcssa | 0);
   if ($55 < +HEAPF64[$11 >> 3]) {
    $$lcssa50 = $55;
    label = 24;
    break;
   }
   if (($i$1 | 0) > 0) if ($55 < +HEAPF64[$12 >> 3]) if ($55 / $err0$0 > +HEAPF64[$13 >> 3]) {
    $$lcssa50 = $55;
    label = 24;
    break;
   }
   if (($i$1 | 0) == (HEAP32[$14 >> 2] | 0)) {
    $$lcssa50 = $55;
    label = 24;
    break;
   }
   if (($$lcssa | 0) > 0) {
    $j$238 = 0;
    while (1) {
     if ((_icpGetJ_U_S($4 + ($j$238 * 12 << 3) | 0, $handle, $matXw2Xc, (HEAP32[$9 >> 2] | 0) + ($j$238 * 24 | 0) | 0) | 0) < 0) {
      label = 20;
      break L11;
     }
     $j$238 = $j$238 + 1 | 0;
     $$pre = HEAP32[$0 >> 2] | 0;
     if (($j$238 | 0) >= ($$pre | 0)) {
      $$lcssa28 = $$pre;
      break;
     }
    }
   } else $$lcssa28 = $$lcssa;
   if ((_icpGetDeltaS($dS, $7, $4, $$lcssa28 << 1) | 0) < 0) {
    label = 22;
    break;
   }
   _icpUpdateMat($matXw2Xc, $dS) | 0;
   $err0$0 = $55;
   $i$1 = $i$1 + 1 | 0;
  }
  if ((label | 0) == 10) {
   _icpGetXw2XcCleanup($4, $7);
   $$0 = -1;
   break;
  } else if ((label | 0) == 20) {
   _icpGetXw2XcCleanup($4, $7);
   $$0 = -1;
   break;
  } else if ((label | 0) == 22) {
   _icpGetXw2XcCleanup($4, $7);
   $$0 = -1;
   break;
  } else if ((label | 0) == 24) {
   HEAPF64[$err >> 3] = $$lcssa50;
   _free($4);
   _free($7);
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arGetMarkerInfo($image, $xsize, $ysize, $pixelFormat, $markerInfo2, $marker2_num, $pattHandle, $imageProcMode, $pattDetectMode, $arParamLTf, $pattRatio, $markerInfo, $marker_num, $matrixCodeType) {
 $image = $image | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $pixelFormat = $pixelFormat | 0;
 $markerInfo2 = $markerInfo2 | 0;
 $marker2_num = $marker2_num | 0;
 $pattHandle = $pattHandle | 0;
 $imageProcMode = $imageProcMode | 0;
 $pattDetectMode = $pattDetectMode | 0;
 $arParamLTf = $arParamLTf | 0;
 $pattRatio = +$pattRatio;
 $markerInfo = $markerInfo | 0;
 $marker_num = $marker_num | 0;
 $matrixCodeType = $matrixCodeType | 0;
 var $0 = 0, $1 = 0, $26 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $i$03 = 0, $j$0$lcssa = 0, $j$02 = 0, $j$1 = 0, $pos0 = 0, $pos1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $pos0 = sp + 4 | 0;
 $pos1 = sp;
 $0 = $pattDetectMode >>> 0 < 2;
 $1 = ($pattDetectMode | 0) == 2;
 if (($marker2_num | 0) > 0) {
  $i$03 = 0;
  $j$02 = 0;
  while (1) {
   HEAP32[$markerInfo + ($j$02 << 8) >> 2] = HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) >> 2];
   if ((_arParamObserv2IdealLTf($arParamLTf, +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 8 >> 3], +HEAPF64[$markerInfo2 + ($i$03 * 80048 | 0) + 16 >> 3], $pos0, $pos1) | 0) < 0) $j$1 = $j$02; else {
    HEAPF64[$markerInfo + ($j$02 << 8) + 56 >> 3] = +HEAPF32[$pos0 >> 2];
    HEAPF64[$markerInfo + ($j$02 << 8) + 64 >> 3] = +HEAPF32[$pos1 >> 2];
    $26 = $markerInfo + ($j$02 << 8) + 168 | 0;
    if ((_arGetLine($markerInfo2 + ($i$03 * 80048 | 0) + 28 | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 40028 | 0, HEAP32[$markerInfo2 + ($i$03 * 80048 | 0) + 24 >> 2] | 0, $markerInfo2 + ($i$03 * 80048 | 0) + 80028 | 0, $arParamLTf, $markerInfo + ($j$02 << 8) + 72 | 0, $26) | 0) < 0) $j$1 = $j$02; else {
     $29 = $markerInfo + ($j$02 << 8) + 8 | 0;
     $30 = $markerInfo + ($j$02 << 8) + 20 | 0;
     $31 = $markerInfo + ($j$02 << 8) + 40 | 0;
     $32 = $markerInfo + ($j$02 << 8) + 12 | 0;
     $33 = $markerInfo + ($j$02 << 8) + 24 | 0;
     $34 = $markerInfo + ($j$02 << 8) + 48 | 0;
     switch (_arPattGetIDGlobal($pattHandle, $imageProcMode, $pattDetectMode, $image, $xsize, $ysize, $pixelFormat, $arParamLTf, $26, $pattRatio, $29, $30, $31, $32, $33, $34, $matrixCodeType, $markerInfo + ($j$02 << 8) + 240 | 0, $markerInfo + ($j$02 << 8) + 248 | 0) | 0) {
     case 0:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 0;
       break;
      }
     case -1:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 2;
       break;
      }
     case -2:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 3;
       break;
      }
     case -3:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 4;
       break;
      }
     case -4:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 5;
       break;
      }
     case -5:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 9;
       break;
      }
     case -6:
      {
       HEAP32[$markerInfo + ($j$02 << 8) + 236 >> 2] = 1;
       break;
      }
     default:
      {}
     }
     if ($0) {
      HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$29 >> 2];
      HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$30 >> 2];
      HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$31 >> 3];
     } else if ($1) {
      HEAP32[$markerInfo + ($j$02 << 8) + 4 >> 2] = HEAP32[$32 >> 2];
      HEAP32[$markerInfo + ($j$02 << 8) + 16 >> 2] = HEAP32[$33 >> 2];
      HEAPF64[$markerInfo + ($j$02 << 8) + 32 >> 3] = +HEAPF64[$34 >> 3];
     }
     $j$1 = $j$02 + 1 | 0;
    }
   }
   $i$03 = $i$03 + 1 | 0;
   if (($i$03 | 0) >= ($marker2_num | 0)) {
    $j$0$lcssa = $j$1;
    break;
   } else $j$02 = $j$1;
  }
 } else $j$0$lcssa = 0;
 HEAP32[$marker_num >> 2] = $j$0$lcssa;
 STACKTOP = sp;
 return 0;
}

function _arImageProcLumaHistAndBoxFilterWithBias($ipi, $dataPtr, $boxSize, $bias) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 $boxSize = $boxSize | 0;
 $bias = $bias | 0;
 var $$0 = 0, $$lcssa = 0, $$pre$phi6Z2D = 0, $$pre$phiZ2D = 0, $0 = 0, $10 = 0, $12 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $20 = 0, $24 = 0, $25 = 0, $26 = 0, $43 = 0, $5 = 0, $50 = 0, $57 = 0, $7 = 0, $count$0$lcssa = 0, $count$015 = 0, $count$110 = 0, $count$2 = 0, $count$3 = 0, $i$020 = 0, $i$18 = 0, $j$021 = 0, $kernel_i$011 = 0, $kernel_j$016 = 0, $val$0$lcssa = 0, $val$014 = 0, $val$19 = 0, $val$2 = 0, $val$3 = 0;
 $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;
 do if (($0 | 0) < 0) $$0 = $0; else {
  $2 = $ipi + 4 | 0;
  if (!(HEAP32[$2 >> 2] | 0)) {
   $5 = $ipi + 8 | 0;
   $7 = $ipi + 12 | 0;
   $10 = _malloc(Math_imul(HEAP32[$7 >> 2] | 0, HEAP32[$5 >> 2] | 0) | 0) | 0;
   HEAP32[$2 >> 2] = $10;
   if (!$10) {
    $$0 = -1;
    break;
   } else {
    $$pre$phi6Z2D = $5;
    $$pre$phiZ2D = $7;
   }
  } else {
   $$pre$phi6Z2D = $ipi + 8 | 0;
   $$pre$phiZ2D = $ipi + 12 | 0;
  }
  $12 = $boxSize >> 1;
  $13 = 0 - $12 | 0;
  $14 = HEAP32[$$pre$phiZ2D >> 2] | 0;
  if (($14 | 0) > 0) {
   $16 = ($12 | 0) < ($13 | 0);
   $17 = ($12 | 0) < ($13 | 0);
   $j$021 = 0;
   do {
    $18 = HEAP32[$$pre$phi6Z2D >> 2] | 0;
    if (($18 | 0) > 0) {
     $25 = $18;
     $i$020 = 0;
     do {
      if ($16) {
       $count$0$lcssa = 0;
       $val$0$lcssa = 0;
      } else {
       $count$015 = 0;
       $kernel_j$016 = $13;
       $val$014 = 0;
       while (1) {
        $20 = $kernel_j$016 + $j$021 | 0;
        if (($20 | 0) < 0) {
         $count$3 = $count$015;
         $val$3 = $val$014;
        } else if (($20 | 0) < (HEAP32[$$pre$phiZ2D >> 2] | 0)) {
         $24 = Math_imul($25, $20) | 0;
         if ($17) {
          $count$3 = $count$015;
          $val$3 = $val$014;
         } else {
          $count$110 = $count$015;
          $kernel_i$011 = $13;
          $val$19 = $val$014;
          while (1) {
           $26 = $kernel_i$011 + $i$020 | 0;
           if (($26 | 0) > -1 & ($26 | 0) < ($25 | 0)) {
            $count$2 = $count$110 + 1 | 0;
            $val$2 = (HEAPU8[(HEAP32[$ipi >> 2] | 0) + ($24 + $26) >> 0] | 0) + $val$19 | 0;
           } else {
            $count$2 = $count$110;
            $val$2 = $val$19;
           }
           if (($kernel_i$011 | 0) < ($12 | 0)) {
            $count$110 = $count$2;
            $kernel_i$011 = $kernel_i$011 + 1 | 0;
            $val$19 = $val$2;
           } else {
            $count$3 = $count$2;
            $val$3 = $val$2;
            break;
           }
          }
         }
        } else {
         $count$3 = $count$015;
         $val$3 = $val$014;
        }
        if (($kernel_j$016 | 0) < ($12 | 0)) {
         $count$015 = $count$3;
         $kernel_j$016 = $kernel_j$016 + 1 | 0;
         $val$014 = $val$3;
        } else {
         $count$0$lcssa = $count$3;
         $val$0$lcssa = $val$3;
         break;
        }
       }
      }
      $43 = (Math_imul($25, $j$021) | 0) + $i$020 | 0;
      HEAP8[(HEAP32[$2 >> 2] | 0) + $43 >> 0] = ($val$0$lcssa | 0) / ($count$0$lcssa | 0) | 0;
      $i$020 = $i$020 + 1 | 0;
      $25 = HEAP32[$$pre$phi6Z2D >> 2] | 0;
     } while (($i$020 | 0) < ($25 | 0));
    }
    $j$021 = $j$021 + 1 | 0;
    $50 = HEAP32[$$pre$phiZ2D >> 2] | 0;
   } while (($j$021 | 0) < ($50 | 0));
   $$lcssa = $50;
  } else $$lcssa = $14;
  if (!$bias) $$0 = 0; else if ((Math_imul($$lcssa, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0) > 0) {
   $i$18 = 0;
   do {
    $57 = (HEAP32[$2 >> 2] | 0) + $i$18 | 0;
    HEAP8[$57 >> 0] = (HEAPU8[$57 >> 0] | 0) + $bias;
    $i$18 = $i$18 + 1 | 0;
   } while (($i$18 | 0) < (Math_imul(HEAP32[$$pre$phiZ2D >> 2] | 0, HEAP32[$$pre$phi6Z2D >> 2] | 0) | 0));
   $$0 = 0;
  } else $$0 = 0;
 } while (0);
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($this, $0) {
 $this = $this | 0;
 $0 = $0 | 0;
 var $$pre$i$i$i = 0, $$pre$i$i$i2 = 0, $10 = 0, $14 = 0, $17 = 0, $22 = 0, $23 = 0, $26 = 0, $27 = 0, $29 = 0, $30 = 0, $39 = 0, $42 = 0, $47 = 0, $48 = 0, $5 = 0, $53 = 0, $55 = 0, $58 = 0, $62 = 0, $65 = 0, $7 = 0, $70 = 0, $71 = 0, $74 = 0, $75 = 0, $77 = 0, $78 = 0, $87 = 0, $90 = 0, $95 = 0, $96 = 0;
 do if (!(HEAP8[$this >> 0] & 1)) {
  HEAP8[$this + 1 >> 0] = 0;
  HEAP8[$this >> 0] = 0;
 } else {
  $5 = $this + 8 | 0;
  HEAP8[HEAP32[$5 >> 2] >> 0] = 0;
  $7 = $this + 4 | 0;
  HEAP32[$7 >> 2] = 0;
  $$pre$i$i$i = HEAP8[$this >> 0] | 0;
  if (!($$pre$i$i$i & 1)) {
   $14 = $$pre$i$i$i;
   $23 = 10;
  } else {
   $10 = HEAP32[$this >> 2] | 0;
   $14 = $10 & 255;
   $23 = ($10 & -2) + -1 | 0;
  }
  if (!($14 & 1)) {
   $17 = ($14 & 255) >>> 1;
   if (($14 & 255) < 22) {
    $22 = 10;
    $42 = $17;
    $95 = 1;
   } else {
    $22 = ($17 + 16 & 240) + -1 | 0;
    $42 = $17;
    $95 = 1;
   }
  } else {
   $22 = 10;
   $42 = 0;
   $95 = 0;
  }
  if (($22 | 0) != ($23 | 0)) {
   if (($22 | 0) == 10) {
    $29 = $this + 1 | 0;
    $30 = HEAP32[$5 >> 2] | 0;
    if ($95) {
     _memcpy($29 | 0, $30 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0;
     _free($30);
    } else {
     HEAP8[$29 >> 0] = HEAP8[$30 >> 0] | 0;
     _free($30);
    }
    HEAP8[$this >> 0] = $42 << 1;
    break;
   }
   $26 = $22 + 1 | 0;
   $27 = _malloc($26) | 0;
   if (!($22 >>> 0 <= $23 >>> 0 & ($27 | 0) == 0)) {
    if ($95) _memcpy($27 | 0, $this + 1 | 0, (($14 & 255) >>> 1) + 1 | 0) | 0; else {
     $39 = HEAP32[$5 >> 2] | 0;
     HEAP8[$27 >> 0] = HEAP8[$39 >> 0] | 0;
     _free($39);
    }
    HEAP32[$this >> 2] = $26 | 1;
    HEAP32[$7 >> 2] = $42;
    HEAP32[$5 >> 2] = $27;
   }
  }
 } while (0);
 HEAP32[$this >> 2] = HEAP32[$0 >> 2];
 HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2];
 HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2];
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 $47 = $this + 12 | 0;
 $48 = $0 + 12 | 0;
 do if (!(HEAP8[$47 >> 0] & 1)) {
  HEAP8[$47 + 1 >> 0] = 0;
  HEAP8[$47 >> 0] = 0;
 } else {
  $53 = $this + 20 | 0;
  HEAP8[HEAP32[$53 >> 2] >> 0] = 0;
  $55 = $this + 16 | 0;
  HEAP32[$55 >> 2] = 0;
  $$pre$i$i$i2 = HEAP8[$47 >> 0] | 0;
  if (!($$pre$i$i$i2 & 1)) {
   $62 = $$pre$i$i$i2;
   $71 = 10;
  } else {
   $58 = HEAP32[$47 >> 2] | 0;
   $62 = $58 & 255;
   $71 = ($58 & -2) + -1 | 0;
  }
  if (!($62 & 1)) {
   $65 = ($62 & 255) >>> 1;
   if (($62 & 255) < 22) {
    $70 = 10;
    $90 = $65;
    $96 = 1;
   } else {
    $70 = ($65 + 16 & 240) + -1 | 0;
    $90 = $65;
    $96 = 1;
   }
  } else {
   $70 = 10;
   $90 = 0;
   $96 = 0;
  }
  if (($70 | 0) != ($71 | 0)) {
   if (($70 | 0) == 10) {
    $77 = $47 + 1 | 0;
    $78 = HEAP32[$53 >> 2] | 0;
    if ($96) {
     _memcpy($77 | 0, $78 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0;
     _free($78);
    } else {
     HEAP8[$77 >> 0] = HEAP8[$78 >> 0] | 0;
     _free($78);
    }
    HEAP8[$47 >> 0] = $90 << 1;
    break;
   }
   $74 = $70 + 1 | 0;
   $75 = _malloc($74) | 0;
   if (!($70 >>> 0 <= $71 >>> 0 & ($75 | 0) == 0)) {
    if ($96) _memcpy($75 | 0, $47 + 1 | 0, (($62 & 255) >>> 1) + 1 | 0) | 0; else {
     $87 = HEAP32[$53 >> 2] | 0;
     HEAP8[$75 >> 0] = HEAP8[$87 >> 0] | 0;
     _free($87);
    }
    HEAP32[$47 >> 2] = $74 | 1;
    HEAP32[$55 >> 2] = $90;
    HEAP32[$53 >> 2] = $75;
   }
  }
 } while (0);
 HEAP32[$47 >> 2] = HEAP32[$48 >> 2];
 HEAP32[$47 + 4 >> 2] = HEAP32[$48 + 4 >> 2];
 HEAP32[$47 + 8 >> 2] = HEAP32[$48 + 8 >> 2];
 HEAP32[$48 >> 2] = 0;
 HEAP32[$48 + 4 >> 2] = 0;
 HEAP32[$48 + 8 >> 2] = 0;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) {
 $this = $this | 0;
 $__nbc = $__nbc | 0;
 var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0;
 $0 = $this + 4 | 0;
 L1 : do if (!$__nbc) {
  $51 = HEAP32[$this >> 2] | 0;
  HEAP32[$this >> 2] = 0;
  if ($51) __ZdlPv($51);
  HEAP32[$0 >> 2] = 0;
 } else {
  $3 = __Znwj($__nbc << 2) | 0;
  $4 = HEAP32[$this >> 2] | 0;
  HEAP32[$this >> 2] = $3;
  if ($4) __ZdlPv($4);
  HEAP32[$0 >> 2] = $__nbc;
  if ($__nbc) {
   $__i$039 = 0;
   do {
    HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0;
    $__i$039 = $__i$039 + 1 | 0;
   } while (($__i$039 | 0) != ($__nbc | 0));
  }
  $9 = $this + 8 | 0;
  $10 = HEAP32[$9 >> 2] | 0;
  if ($10) {
   $13 = HEAP32[$10 + 4 >> 2] | 0;
   $14 = $__nbc + -1 | 0;
   $16 = ($14 & $__nbc | 0) == 0;
   if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0;
   HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9;
   $__cp$0252833 = HEAP32[$10 >> 2] | 0;
   if ($__cp$0252833) {
    $$in = $10;
    $__cp$0$in2736 = $10;
    $__cp$0252837 = $__cp$0252833;
    $__phash$0$ph$ph35 = $21;
    while (1) {
     $$in41 = $$in;
     $__cp$0$in30 = $__cp$0$in2736;
     $__cp$02531 = $__cp$0252837;
     L21 : while (1) {
      $__cp$026 = $__cp$02531;
      while (1) {
       $25 = HEAP32[$__cp$026 + 4 >> 2] | 0;
       if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0;
       if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) {
        $__cp$026$lcssa = $__cp$026;
        break;
       }
       $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0;
       if (!(HEAP32[$31 >> 2] | 0)) {
        $$in41$lcssa = $$in41;
        $$lcssa56 = $29;
        $$lcssa58 = $31;
        $__cp$026$lcssa53 = $__cp$026;
        break L21;
       }
       $34 = $__cp$026 + 8 | 0;
       $__np$0 = $__cp$026;
       while (1) {
        $36 = HEAP32[$__np$0 >> 2] | 0;
        if (!$36) {
         $$lcssa = $36;
         $__np$0$lcssa = $__np$0;
         break;
        }
        if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else {
         $$lcssa = $36;
         $__np$0$lcssa = $__np$0;
         break;
        }
       }
       HEAP32[$$in41 >> 2] = $$lcssa;
       HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2];
       HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026;
       $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0;
       if (!$__cp$026) break L1;
      }
      $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0;
      if (!$__cp$025) break L1; else {
       $$in41 = $__cp$026$lcssa;
       $__cp$0$in30 = $__cp$026$lcssa;
       $__cp$02531 = $__cp$025;
      }
     }
     HEAP32[$$lcssa58 >> 2] = $$in41$lcssa;
     $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0;
     if (!$__cp$02528) break; else {
      $$in = $__cp$026$lcssa53;
      $__cp$0$in2736 = $__cp$026$lcssa53;
      $__cp$0252837 = $__cp$02528;
      $__phash$0$ph$ph35 = $$lcssa56;
     }
    }
   }
  }
 } while (0);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__nbc) {
 $this = $this | 0;
 $__nbc = $__nbc | 0;
 var $$in = 0, $$in41 = 0, $$in41$lcssa = 0, $$lcssa = 0, $$lcssa56 = 0, $$lcssa58 = 0, $0 = 0, $10 = 0, $13 = 0, $14 = 0, $16 = 0, $21 = 0, $25 = 0, $29 = 0, $3 = 0, $31 = 0, $34 = 0, $36 = 0, $4 = 0, $51 = 0, $9 = 0, $__cp$0$in2736 = 0, $__cp$0$in30 = 0, $__cp$025 = 0, $__cp$02528 = 0, $__cp$0252833 = 0, $__cp$0252837 = 0, $__cp$02531 = 0, $__cp$026 = 0, $__cp$026$lcssa = 0, $__cp$026$lcssa53 = 0, $__i$039 = 0, $__np$0 = 0, $__np$0$lcssa = 0, $__phash$0$ph$ph35 = 0;
 $0 = $this + 4 | 0;
 L1 : do if (!$__nbc) {
  $51 = HEAP32[$this >> 2] | 0;
  HEAP32[$this >> 2] = 0;
  if ($51) __ZdlPv($51);
  HEAP32[$0 >> 2] = 0;
 } else {
  $3 = __Znwj($__nbc << 2) | 0;
  $4 = HEAP32[$this >> 2] | 0;
  HEAP32[$this >> 2] = $3;
  if ($4) __ZdlPv($4);
  HEAP32[$0 >> 2] = $__nbc;
  if ($__nbc) {
   $__i$039 = 0;
   do {
    HEAP32[(HEAP32[$this >> 2] | 0) + ($__i$039 << 2) >> 2] = 0;
    $__i$039 = $__i$039 + 1 | 0;
   } while (($__i$039 | 0) != ($__nbc | 0));
  }
  $9 = $this + 8 | 0;
  $10 = HEAP32[$9 >> 2] | 0;
  if ($10) {
   $13 = HEAP32[$10 + 4 >> 2] | 0;
   $14 = $__nbc + -1 | 0;
   $16 = ($14 & $__nbc | 0) == 0;
   if ($16) $21 = $13 & $14; else $21 = ($13 >>> 0) % ($__nbc >>> 0) | 0;
   HEAP32[(HEAP32[$this >> 2] | 0) + ($21 << 2) >> 2] = $9;
   $__cp$0252833 = HEAP32[$10 >> 2] | 0;
   if ($__cp$0252833) {
    $$in = $10;
    $__cp$0$in2736 = $10;
    $__cp$0252837 = $__cp$0252833;
    $__phash$0$ph$ph35 = $21;
    while (1) {
     $$in41 = $$in;
     $__cp$0$in30 = $__cp$0$in2736;
     $__cp$02531 = $__cp$0252837;
     L21 : while (1) {
      $__cp$026 = $__cp$02531;
      while (1) {
       $25 = HEAP32[$__cp$026 + 4 >> 2] | 0;
       if ($16) $29 = $25 & $14; else $29 = ($25 >>> 0) % ($__nbc >>> 0) | 0;
       if (($29 | 0) == ($__phash$0$ph$ph35 | 0)) {
        $__cp$026$lcssa = $__cp$026;
        break;
       }
       $31 = (HEAP32[$this >> 2] | 0) + ($29 << 2) | 0;
       if (!(HEAP32[$31 >> 2] | 0)) {
        $$in41$lcssa = $$in41;
        $$lcssa56 = $29;
        $$lcssa58 = $31;
        $__cp$026$lcssa53 = $__cp$026;
        break L21;
       }
       $34 = $__cp$026 + 8 | 0;
       $__np$0 = $__cp$026;
       while (1) {
        $36 = HEAP32[$__np$0 >> 2] | 0;
        if (!$36) {
         $$lcssa = $36;
         $__np$0$lcssa = $__np$0;
         break;
        }
        if ((HEAP32[$34 >> 2] | 0) == (HEAP32[$36 + 8 >> 2] | 0)) $__np$0 = $36; else {
         $$lcssa = $36;
         $__np$0$lcssa = $__np$0;
         break;
        }
       }
       HEAP32[$$in41 >> 2] = $$lcssa;
       HEAP32[$__np$0$lcssa >> 2] = HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2];
       HEAP32[HEAP32[(HEAP32[$this >> 2] | 0) + ($29 << 2) >> 2] >> 2] = $__cp$026;
       $__cp$026 = HEAP32[$__cp$0$in30 >> 2] | 0;
       if (!$__cp$026) break L1;
      }
      $__cp$025 = HEAP32[$__cp$026$lcssa >> 2] | 0;
      if (!$__cp$025) break L1; else {
       $$in41 = $__cp$026$lcssa;
       $__cp$0$in30 = $__cp$026$lcssa;
       $__cp$02531 = $__cp$025;
      }
     }
     HEAP32[$$lcssa58 >> 2] = $$in41$lcssa;
     $__cp$02528 = HEAP32[$__cp$026$lcssa53 >> 2] | 0;
     if (!$__cp$02528) break; else {
      $$in = $__cp$026$lcssa53;
      $__cp$0$in2736 = $__cp$026$lcssa53;
      $__cp$0252837 = $__cp$02528;
      $__phash$0$ph$ph35 = $$lcssa56;
     }
    }
   }
  }
 } while (0);
 return;
}

function _arglCameraFrustum($cparam, $focalmin, $focalmax, $m_projection) {
 $cparam = $cparam | 0;
 $focalmin = +$focalmin;
 $focalmax = +$focalmax;
 $m_projection = $m_projection | 0;
 var $0 = 0, $11 = 0, $17 = 0, $2 = 0, $23 = 0, $29 = 0, $33 = 0.0, $50 = 0.0, $63 = 0, $7 = 0.0, $75 = 0, $77 = 0.0, $84 = 0, $88 = 0.0, $90 = 0.0, $92 = 0.0, $94 = 0.0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0.0, $i$111 = 0, $i$29 = 0, $icpara = 0, $j$18 = 0, $p = 0, $q = 0, $trans = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 400 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $icpara = sp + 296 | 0;
 $trans = sp + 200 | 0;
 $p = sp + 128 | 0;
 $q = sp;
 $0 = HEAP32[$cparam >> 2] | 0;
 $2 = HEAP32[$cparam + 4 >> 2] | 0;
 if ((_arParamDecompMat($cparam + 8 | 0, $icpara, $trans) | 0) < 0) _arLog(3, 6024, sp + 392 | 0); else {
  $7 = +($2 + -1 | 0);
  $11 = $icpara + 32 | 0;
  HEAPF64[$11 >> 3] = $7 * +HEAPF64[$icpara + 64 >> 3] - +HEAPF64[$11 >> 3];
  $17 = $icpara + 40 | 0;
  HEAPF64[$17 >> 3] = $7 * +HEAPF64[$icpara + 72 >> 3] - +HEAPF64[$17 >> 3];
  $23 = $icpara + 48 | 0;
  HEAPF64[$23 >> 3] = $7 * +HEAPF64[$icpara + 80 >> 3] - +HEAPF64[$23 >> 3];
  $29 = $icpara + 56 | 0;
  HEAPF64[$29 >> 3] = $7 * +HEAPF64[$icpara + 88 >> 3] - +HEAPF64[$29 >> 3];
  $33 = +HEAPF64[$icpara + 80 >> 3];
  $i$111 = 0;
  do {
   HEAPF64[$p + ($i$111 * 24 | 0) >> 3] = +HEAPF64[$icpara + ($i$111 << 5) >> 3] / $33;
   HEAPF64[$p + ($i$111 * 24 | 0) + 8 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 8 >> 3] / $33;
   HEAPF64[$p + ($i$111 * 24 | 0) + 16 >> 3] = +HEAPF64[$icpara + ($i$111 << 5) + 16 >> 3] / $33;
   $i$111 = $i$111 + 1 | 0;
  } while (($i$111 | 0) != 3);
  $50 = +($0 + -1 | 0);
  HEAPF64[$q >> 3] = +HEAPF64[$p >> 3] * 2.0 / $50;
  HEAPF64[$q + 8 >> 3] = +HEAPF64[$p + 8 >> 3] * 2.0 / $50;
  HEAPF64[$q + 16 >> 3] = +HEAPF64[$p + 16 >> 3] * 2.0 / $50 + -1.0;
  $63 = $q + 24 | 0;
  HEAP32[$63 >> 2] = 0;
  HEAP32[$63 + 4 >> 2] = 0;
  HEAP32[$63 + 8 >> 2] = 0;
  HEAP32[$63 + 12 >> 2] = 0;
  HEAPF64[$q + 40 >> 3] = +HEAPF64[$p + 32 >> 3] * 2.0 / $7;
  HEAPF64[$q + 48 >> 3] = +HEAPF64[$p + 40 >> 3] * 2.0 / $7 + -1.0;
  $75 = $q + 56 | 0;
  $77 = $focalmax - $focalmin;
  HEAP32[$75 >> 2] = 0;
  HEAP32[$75 + 4 >> 2] = 0;
  HEAP32[$75 + 8 >> 2] = 0;
  HEAP32[$75 + 12 >> 2] = 0;
  HEAP32[$75 + 16 >> 2] = 0;
  HEAP32[$75 + 20 >> 2] = 0;
  HEAPF64[$q + 80 >> 3] = ($focalmin + $focalmax) / $77;
  HEAPF64[$q + 88 >> 3] = $focalmax * -2.0 * $focalmin / $77;
  $84 = $q + 96 | 0;
  HEAP32[$84 >> 2] = 0;
  HEAP32[$84 + 4 >> 2] = 0;
  HEAP32[$84 + 8 >> 2] = 0;
  HEAP32[$84 + 12 >> 2] = 0;
  HEAPF64[$q + 112 >> 3] = 1.0;
  HEAPF64[$q + 120 >> 3] = 0.0;
  $88 = +HEAPF64[$trans + 24 >> 3];
  $90 = +HEAPF64[$trans + 56 >> 3];
  $92 = +HEAPF64[$trans + 88 >> 3];
  $i$29 = 0;
  do {
   $94 = +HEAPF64[$q + ($i$29 << 5) >> 3];
   $95 = $q + ($i$29 << 5) + 8 | 0;
   $96 = $q + ($i$29 << 5) + 16 | 0;
   $97 = +HEAPF64[$95 >> 3];
   $98 = +HEAPF64[$96 >> 3];
   $j$18 = 0;
   do {
    HEAPF64[$m_projection + (($j$18 << 2) + $i$29 << 3) >> 3] = $94 * +HEAPF64[$trans + ($j$18 << 3) >> 3] + $97 * +HEAPF64[$trans + 32 + ($j$18 << 3) >> 3] + $98 * +HEAPF64[$trans + 64 + ($j$18 << 3) >> 3];
    $j$18 = $j$18 + 1 | 0;
   } while (($j$18 | 0) != 3);
   HEAPF64[$m_projection + ($i$29 + 12 << 3) >> 3] = +HEAPF64[$q + ($i$29 << 5) + 24 >> 3] + ($94 * $88 + +HEAPF64[$95 >> 3] * $90 + +HEAPF64[$96 >> 3] * $92);
   $i$29 = $i$29 + 1 | 0;
  } while (($i$29 | 0) != 4);
 }
 STACKTOP = sp;
 return;
}

function _arParamIdeal2Observ($dist_factor, $ix, $iy, $ox, $oy, $dist_function_version) {
 $dist_factor = $dist_factor | 0;
 $ix = +$ix;
 $iy = +$iy;
 $ox = $ox | 0;
 $oy = $oy | 0;
 $dist_function_version = $dist_function_version | 0;
 var $$0 = 0, $10 = 0.0, $104 = 0.0, $116 = 0.0, $12 = 0.0, $122 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0, $130 = 0.0, $14 = 0.0, $141 = 0.0, $16 = 0.0, $19 = 0.0, $22 = 0.0, $25 = 0.0, $30 = 0.0, $4 = 0.0, $55 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0.0, $60 = 0, $63 = 0.0, $71 = 0.0, $8 = 0.0, $83 = 0.0, $90 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0, $98 = 0.0, $storemerge = 0.0, $storemerge6 = 0.0, $storemerge7 = 0.0;
 switch ($dist_function_version | 0) {
 case 4:
  {
   $4 = +HEAPF64[$dist_factor + 16 >> 3];
   $6 = +HEAPF64[$dist_factor + 24 >> 3];
   $8 = +HEAPF64[$dist_factor + 32 >> 3];
   $10 = +HEAPF64[$dist_factor + 40 >> 3];
   $12 = +HEAPF64[$dist_factor + 48 >> 3];
   $14 = +HEAPF64[$dist_factor + 56 >> 3];
   $16 = +HEAPF64[$dist_factor + 64 >> 3];
   $19 = ($ix - $12) * $16 / $8;
   $22 = ($iy - $14) * $16 / $10;
   $25 = $19 * $19 + $22 * $22;
   $30 = +HEAPF64[$dist_factor >> 3] * $25 + 1.0 + $25 * (+HEAPF64[$dist_factor + 8 >> 3] * $25);
   HEAPF64[$ox >> 3] = $12 + $8 * ($6 * ($19 * ($19 * 2.0) + $25) + ($4 * 2.0 * $19 * $22 + $19 * $30));
   HEAPF64[$oy >> 3] = $14 + $10 * ($6 * 2.0 * $19 * $22 + ($4 * ($25 + $22 * ($22 * 2.0)) + $22 * $30));
   $$0 = 0;
   break;
  }
 case 3:
  {
   $55 = +HEAPF64[$dist_factor >> 3];
   $58 = +HEAPF64[$dist_factor + 16 >> 3];
   $59 = ($ix - $55) * $58;
   $60 = $dist_factor + 8 | 0;
   $63 = $58 * ($iy - +HEAPF64[$60 >> 3]);
   if ($59 == 0.0 & $63 == 0.0) {
    HEAPF64[$ox >> 3] = $55;
    $storemerge7 = +HEAPF64[$60 >> 3];
   } else {
    $71 = $59 * $59 + $63 * $63;
    $83 = 1.0 - $71 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8) - $71 * ($71 * (+HEAPF64[$dist_factor + 40 >> 3] / 1.0e8 / 1.0e5));
    HEAPF64[$ox >> 3] = $55 + +HEAPF64[$dist_factor + 24 >> 3] * ($59 * $83);
    $storemerge7 = +HEAPF64[$60 >> 3] + $63 * $83;
   }
   HEAPF64[$oy >> 3] = $storemerge7;
   $$0 = 0;
   break;
  }
 case 2:
  {
   $90 = +HEAPF64[$dist_factor >> 3];
   $93 = +HEAPF64[$dist_factor + 16 >> 3];
   $94 = ($ix - $90) * $93;
   $95 = $dist_factor + 8 | 0;
   $98 = $93 * ($iy - +HEAPF64[$95 >> 3]);
   if ($94 == 0.0 & $98 == 0.0) {
    HEAPF64[$ox >> 3] = $90;
    $storemerge6 = +HEAPF64[$95 >> 3];
   } else {
    $104 = $94 * $94 + $98 * $98;
    $116 = 1.0 - $104 * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8) - $104 * ($104 * (+HEAPF64[$dist_factor + 32 >> 3] / 1.0e8 / 1.0e5));
    HEAPF64[$ox >> 3] = $90 + $94 * $116;
    $storemerge6 = +HEAPF64[$95 >> 3] + $98 * $116;
   }
   HEAPF64[$oy >> 3] = $storemerge6;
   $$0 = 0;
   break;
  }
 case 1:
  {
   $122 = +HEAPF64[$dist_factor >> 3];
   $125 = +HEAPF64[$dist_factor + 16 >> 3];
   $126 = ($ix - $122) * $125;
   $127 = $dist_factor + 8 | 0;
   $130 = $125 * ($iy - +HEAPF64[$127 >> 3]);
   if ($126 == 0.0 & $130 == 0.0) {
    HEAPF64[$ox >> 3] = $122;
    $storemerge = +HEAPF64[$127 >> 3];
   } else {
    $141 = 1.0 - ($126 * $126 + $130 * $130) * (+HEAPF64[$dist_factor + 24 >> 3] / 1.0e8);
    HEAPF64[$ox >> 3] = $122 + $126 * $141;
    $storemerge = +HEAPF64[$127 >> 3] + $130 * $141;
   }
   HEAPF64[$oy >> 3] = $storemerge;
   $$0 = 0;
   break;
  }
 default:
  $$0 = -1;
 }
 return $$0 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 $__nd = $__nd | 0;
 var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0;
 $1 = HEAP32[$__nd + 8 >> 2] | 0;
 $2 = $__nd + 4 | 0;
 HEAP32[$2 >> 2] = $1;
 $3 = $this + 4 | 0;
 $4 = HEAP32[$3 >> 2] | 0;
 $5 = ($4 | 0) == 0;
 L1 : do if ($5) {
  $__chash$0 = 0;
  label = 12;
 } else {
  $6 = $4 + -1 | 0;
  $8 = ($6 & $4 | 0) == 0;
  if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0;
  $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0;
  if (!$14) {
   $__chash$0 = $13;
   label = 12;
  } else {
   $$pn = $14;
   while (1) {
    $__ndptr$0 = HEAP32[$$pn >> 2] | 0;
    if (!$__ndptr$0) {
     $__chash$0 = $13;
     label = 12;
     break L1;
    }
    $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0;
    if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0;
    if (($22 | 0) != ($13 | 0)) {
     $__chash$0 = $13;
     label = 12;
     break L1;
    }
    if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) {
     $81 = 0;
     $__ndptr$1 = $__ndptr$0;
     break;
    } else $$pn = $__ndptr$0;
   }
  }
 } while (0);
 if ((label | 0) == 12) {
  $26 = $this + 12 | 0;
  $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0);
  $32 = +HEAPF32[$this + 16 >> 2];
  do if ($5 | $29 > +($4 >>> 0) * $32) {
   if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0;
   $43 = ($41 & 1 | $4 << 1) ^ 1;
   $46 = ~~+Math_ceil(+($29 / $32)) >>> 0;
   __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43);
   $49 = HEAP32[$3 >> 2] | 0;
   $50 = HEAP32[$2 >> 2] | 0;
   $51 = $49 + -1 | 0;
   if (!($51 & $49)) {
    $__bc$0 = $49;
    $__chash$1 = $51 & $50;
    break;
   } else {
    $__bc$0 = $49;
    $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0;
    break;
   }
  } else {
   $__bc$0 = $4;
   $__chash$1 = $__chash$0;
  } while (0);
  $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0;
  if (!$58) {
   $60 = $this + 8 | 0;
   HEAP32[$__nd >> 2] = HEAP32[$60 >> 2];
   HEAP32[$60 >> 2] = $__nd;
   HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60;
   $64 = HEAP32[$__nd >> 2] | 0;
   if ($64) {
    $67 = HEAP32[$64 + 4 >> 2] | 0;
    $68 = $__bc$0 + -1 | 0;
    if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0;
    HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd;
   }
  } else {
   HEAP32[$__nd >> 2] = HEAP32[$58 >> 2];
   HEAP32[$58 >> 2] = $__nd;
  }
  HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1;
  $81 = 1;
  $__ndptr$1 = $__nd;
 }
 HEAP32[$agg$result >> 2] = $__ndptr$1;
 HEAP8[$agg$result + 4 >> 0] = $81;
 return;
}

function _scanexp($f, $pok) {
 $f = $f | 0;
 $pok = $pok | 0;
 var $$lcssa22 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $20 = 0, $35 = 0, $36 = 0, $48 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $59 = 0, $61 = 0, $62 = 0, $63 = 0, $78 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $98 = 0, $99 = 0, $c$0 = 0, $c$1$be = 0, $c$1$be$lcssa = 0, $c$112 = 0, $c$2$be = 0, $c$2$lcssa = 0, $c$27 = 0, $c$3$be = 0, $neg$0 = 0, $x$013 = 0;
 $0 = $f + 4 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = $f + 100 | 0;
 if ($1 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {
  HEAP32[$0 >> 2] = $1 + 1;
  $10 = HEAPU8[$1 >> 0] | 0;
 } else $10 = ___shgetc($f) | 0;
 switch ($10 | 0) {
 case 43:
 case 45:
  {
   $11 = ($10 | 0) == 45 & 1;
   $12 = HEAP32[$0 >> 2] | 0;
   if ($12 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {
    HEAP32[$0 >> 2] = $12 + 1;
    $20 = HEAPU8[$12 >> 0] | 0;
   } else $20 = ___shgetc($f) | 0;
   if (($pok | 0) != 0 & ($20 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) {
    $c$0 = $20;
    $neg$0 = $11;
   } else {
    HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
    $c$0 = $20;
    $neg$0 = $11;
   } else {
    $c$0 = $20;
    $neg$0 = $11;
   }
   break;
  }
 default:
  {
   $c$0 = $10;
   $neg$0 = 0;
  }
 }
 if (($c$0 + -48 | 0) >>> 0 > 9) if (!(HEAP32[$2 >> 2] | 0)) {
  $98 = -2147483648;
  $99 = 0;
 } else {
  HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
  $98 = -2147483648;
  $99 = 0;
 } else {
  $c$112 = $c$0;
  $x$013 = 0;
  while (1) {
   $35 = $c$112 + -48 + ($x$013 * 10 | 0) | 0;
   $36 = HEAP32[$0 >> 2] | 0;
   if ($36 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {
    HEAP32[$0 >> 2] = $36 + 1;
    $c$1$be = HEAPU8[$36 >> 0] | 0;
   } else $c$1$be = ___shgetc($f) | 0;
   if (($c$1$be + -48 | 0) >>> 0 < 10 & ($35 | 0) < 214748364) {
    $c$112 = $c$1$be;
    $x$013 = $35;
   } else {
    $$lcssa22 = $35;
    $c$1$be$lcssa = $c$1$be;
    break;
   }
  }
  $48 = (($$lcssa22 | 0) < 0) << 31 >> 31;
  if (($c$1$be$lcssa + -48 | 0) >>> 0 < 10) {
   $53 = $$lcssa22;
   $54 = $48;
   $c$27 = $c$1$be$lcssa;
   while (1) {
    $55 = ___muldi3($53 | 0, $54 | 0, 10, 0) | 0;
    $56 = tempRet0;
    $59 = _i64Add($c$27 | 0, (($c$27 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0;
    $61 = _i64Add($59 | 0, tempRet0 | 0, $55 | 0, $56 | 0) | 0;
    $62 = tempRet0;
    $63 = HEAP32[$0 >> 2] | 0;
    if ($63 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {
     HEAP32[$0 >> 2] = $63 + 1;
     $c$2$be = HEAPU8[$63 >> 0] | 0;
    } else $c$2$be = ___shgetc($f) | 0;
    if (($c$2$be + -48 | 0) >>> 0 < 10 & (($62 | 0) < 21474836 | ($62 | 0) == 21474836 & $61 >>> 0 < 2061584302)) {
     $53 = $61;
     $54 = $62;
     $c$27 = $c$2$be;
    } else {
     $92 = $61;
     $93 = $62;
     $c$2$lcssa = $c$2$be;
     break;
    }
   }
  } else {
   $92 = $$lcssa22;
   $93 = $48;
   $c$2$lcssa = $c$1$be$lcssa;
  }
  if (($c$2$lcssa + -48 | 0) >>> 0 < 10) do {
   $78 = HEAP32[$0 >> 2] | 0;
   if ($78 >>> 0 < (HEAP32[$2 >> 2] | 0) >>> 0) {
    HEAP32[$0 >> 2] = $78 + 1;
    $c$3$be = HEAPU8[$78 >> 0] | 0;
   } else $c$3$be = ___shgetc($f) | 0;
  } while (($c$3$be + -48 | 0) >>> 0 < 10);
  if (HEAP32[$2 >> 2] | 0) HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + -1;
  $91 = ($neg$0 | 0) != 0;
  $94 = _i64Subtract(0, 0, $92 | 0, $93 | 0) | 0;
  $98 = $91 ? tempRet0 : $93;
  $99 = $91 ? $94 : $92;
 }
 tempRet0 = $98;
 return $99 | 0;
}
function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($agg$result, $this, $__nd) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 $__nd = $__nd | 0;
 var $$pn = 0, $1 = 0, $13 = 0, $14 = 0, $18 = 0, $2 = 0, $22 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $41 = 0, $43 = 0, $46 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $58 = 0, $6 = 0, $60 = 0, $64 = 0, $67 = 0, $68 = 0, $75 = 0, $8 = 0, $81 = 0, $__bc$0 = 0, $__chash$0 = 0, $__chash$1 = 0, $__ndptr$0 = 0, $__ndptr$1 = 0, label = 0;
 $1 = HEAP32[$__nd + 8 >> 2] | 0;
 $2 = $__nd + 4 | 0;
 HEAP32[$2 >> 2] = $1;
 $3 = $this + 4 | 0;
 $4 = HEAP32[$3 >> 2] | 0;
 $5 = ($4 | 0) == 0;
 L1 : do if ($5) {
  $__chash$0 = 0;
  label = 12;
 } else {
  $6 = $4 + -1 | 0;
  $8 = ($6 & $4 | 0) == 0;
  if ($8) $13 = $6 & $1; else $13 = ($1 >>> 0) % ($4 >>> 0) | 0;
  $14 = HEAP32[(HEAP32[$this >> 2] | 0) + ($13 << 2) >> 2] | 0;
  if (!$14) {
   $__chash$0 = $13;
   label = 12;
  } else {
   $$pn = $14;
   while (1) {
    $__ndptr$0 = HEAP32[$$pn >> 2] | 0;
    if (!$__ndptr$0) {
     $__chash$0 = $13;
     label = 12;
     break L1;
    }
    $18 = HEAP32[$__ndptr$0 + 4 >> 2] | 0;
    if ($8) $22 = $18 & $6; else $22 = ($18 >>> 0) % ($4 >>> 0) | 0;
    if (($22 | 0) != ($13 | 0)) {
     $__chash$0 = $13;
     label = 12;
     break L1;
    }
    if ((HEAP32[$__ndptr$0 + 8 >> 2] | 0) == ($1 | 0)) {
     $81 = 0;
     $__ndptr$1 = $__ndptr$0;
     break;
    } else $$pn = $__ndptr$0;
   }
  }
 } while (0);
 if ((label | 0) == 12) {
  $26 = $this + 12 | 0;
  $29 = +(((HEAP32[$26 >> 2] | 0) + 1 | 0) >>> 0);
  $32 = +HEAPF32[$this + 16 >> 2];
  do if ($5 | $29 > +($4 >>> 0) * $32) {
   if ($4 >>> 0 > 2) $41 = ($4 + -1 & $4 | 0) == 0; else $41 = 0;
   $43 = ($41 & 1 | $4 << 1) ^ 1;
   $46 = ~~+Math_ceil(+($29 / $32)) >>> 0;
   __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $43 >>> 0 < $46 >>> 0 ? $46 : $43);
   $49 = HEAP32[$3 >> 2] | 0;
   $50 = HEAP32[$2 >> 2] | 0;
   $51 = $49 + -1 | 0;
   if (!($51 & $49)) {
    $__bc$0 = $49;
    $__chash$1 = $51 & $50;
    break;
   } else {
    $__bc$0 = $49;
    $__chash$1 = ($50 >>> 0) % ($49 >>> 0) | 0;
    break;
   }
  } else {
   $__bc$0 = $4;
   $__chash$1 = $__chash$0;
  } while (0);
  $58 = HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] | 0;
  if (!$58) {
   $60 = $this + 8 | 0;
   HEAP32[$__nd >> 2] = HEAP32[$60 >> 2];
   HEAP32[$60 >> 2] = $__nd;
   HEAP32[(HEAP32[$this >> 2] | 0) + ($__chash$1 << 2) >> 2] = $60;
   $64 = HEAP32[$__nd >> 2] | 0;
   if ($64) {
    $67 = HEAP32[$64 + 4 >> 2] | 0;
    $68 = $__bc$0 + -1 | 0;
    if (!($68 & $__bc$0)) $75 = $67 & $68; else $75 = ($67 >>> 0) % ($__bc$0 >>> 0) | 0;
    HEAP32[(HEAP32[$this >> 2] | 0) + ($75 << 2) >> 2] = $__nd;
   }
  } else {
   HEAP32[$__nd >> 2] = HEAP32[$58 >> 2];
   HEAP32[$58 >> 2] = $__nd;
  }
  HEAP32[$26 >> 2] = (HEAP32[$26 >> 2] | 0) + 1;
  $81 = 1;
  $__ndptr$1 = $__nd;
 }
 HEAP32[$agg$result >> 2] = $__ndptr$1;
 HEAP8[$agg$result + 4 >> 0] = $81;
 return;
}

function _arGetLine($x_coord, $y_coord, $coord_num, $vertex, $paramLTf, $line, $v) {
 $x_coord = $x_coord | 0;
 $y_coord = $y_coord | 0;
 $coord_num = $coord_num | 0;
 $vertex = $vertex | 0;
 $paramLTf = $paramLTf | 0;
 $line = $line | 0;
 $v = $v | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $12 = 0.0, $15 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $23 = 0, $34 = 0, $35 = 0, $45 = 0, $47 = 0.0, $5 = 0, $50 = 0.0, $52 = 0, $63 = 0, $64 = 0, $67 = 0.0, $69 = 0, $7 = 0, $72 = 0.0, $74 = 0.0, $77 = 0, $80 = 0, $97 = 0, $i$011 = 0, $i$19 = 0, $j$010 = 0, $m0 = 0, $m1 = 0, label = 0, sp = 0, $i$011$looptemp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $m0 = sp + 4 | 0;
 $m1 = sp;
 $0 = _arVecAlloc(2) | 0;
 $1 = _arVecAlloc(2) | 0;
 $2 = _arMatrixAlloc(2, 2) | 0;
 $i$011 = 0;
 L1 : while (1) {
  $i$011$looptemp = $i$011;
  $i$011 = $i$011 + 1 | 0;
  $5 = HEAP32[$vertex + ($i$011 << 2) >> 2] | 0;
  $7 = HEAP32[$vertex + ($i$011$looptemp << 2) >> 2] | 0;
  $12 = +($5 + 1 - $7 | 0) * .05 + .5;
  $15 = ~~(+($7 | 0) + $12);
  $19 = ~~(+($5 | 0) - $12) - $15 | 0;
  $20 = $19 + 1 | 0;
  $21 = _arMatrixAlloc($20, 2) | 0;
  if (($19 | 0) > -1) {
   $j$010 = 0;
   do {
    $23 = $j$010 + $15 | 0;
    if ((_arParamObserv2IdealLTf($paramLTf, +(HEAP32[$x_coord + ($23 << 2) >> 2] | 0), +(HEAP32[$y_coord + ($23 << 2) >> 2] | 0), $m0, $m1) | 0) < 0) {
     $97 = $21;
     label = 10;
     break L1;
    }
    $34 = $j$010 << 1;
    $35 = HEAP32[$21 >> 2] | 0;
    HEAPF64[$35 + ($34 << 3) >> 3] = +HEAPF32[$m0 >> 2];
    HEAPF64[$35 + (($34 | 1) << 3) >> 3] = +HEAPF32[$m1 >> 2];
    $j$010 = $j$010 + 1 | 0;
   } while (($j$010 | 0) < ($20 | 0));
  }
  if ((_arMatrixPCA($21, $2, $0, $1) | 0) < 0) {
   $97 = $21;
   label = 10;
   break;
  }
  $45 = HEAP32[$2 >> 2] | 0;
  $47 = +HEAPF64[$45 + 8 >> 3];
  HEAPF64[$line + ($i$011$looptemp * 24 | 0) >> 3] = $47;
  $50 = -+HEAPF64[$45 >> 3];
  HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 8 >> 3] = $50;
  $52 = HEAP32[$1 >> 2] | 0;
  HEAPF64[$line + ($i$011$looptemp * 24 | 0) + 16 >> 3] = -($47 * +HEAPF64[$52 >> 3] + +HEAPF64[$52 + 8 >> 3] * $50);
  _arMatrixFree($21) | 0;
  if (($i$011 | 0) >= 4) {
   label = 7;
   break;
  }
 }
 L9 : do if ((label | 0) == 7) {
  _arMatrixFree($2) | 0;
  _arVecFree($1) | 0;
  _arVecFree($0) | 0;
  $i$19 = 0;
  while (1) {
   $63 = ($i$19 + 3 | 0) % 4 | 0;
   $64 = $line + ($63 * 24 | 0) | 0;
   $67 = +HEAPF64[$line + ($i$19 * 24 | 0) + 8 >> 3];
   $69 = $line + ($i$19 * 24 | 0) | 0;
   $72 = +HEAPF64[$line + ($63 * 24 | 0) + 8 >> 3];
   $74 = +HEAPF64[$64 >> 3] * $67 - +HEAPF64[$69 >> 3] * $72;
   if (+Math_abs(+$74) < .0001) {
    $$0 = -1;
    break L9;
   }
   $77 = $line + ($i$19 * 24 | 0) + 16 | 0;
   $80 = $line + ($63 * 24 | 0) + 16 | 0;
   HEAPF64[$v + ($i$19 << 4) >> 3] = ($72 * +HEAPF64[$77 >> 3] - $67 * +HEAPF64[$80 >> 3]) / $74;
   HEAPF64[$v + ($i$19 << 4) + 8 >> 3] = (+HEAPF64[$69 >> 3] * +HEAPF64[$80 >> 3] - +HEAPF64[$64 >> 3] * +HEAPF64[$77 >> 3]) / $74;
   $i$19 = $i$19 + 1 | 0;
   if (($i$19 | 0) >= 4) {
    $$0 = 0;
    break;
   }
  }
 } else if ((label | 0) == 10) {
  _arMatrixFree($97) | 0;
  _arMatrixFree($2) | 0;
  _arVecFree($1) | 0;
  _arVecFree($0) | 0;
  $$0 = -1;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function ___stpncpy($d, $s, $n) {
 $d = $d | 0;
 $s = $s | 0;
 $n = $n | 0;
 var $$0$lcssa = 0, $$0$lcssa60 = 0, $$031 = 0, $$04$lcssa = 0, $$04$lcssa61 = 0, $$0430 = 0, $$06$lcssa = 0, $$06$lcssa62 = 0, $$0629 = 0, $$1$lcssa = 0, $$117 = 0, $$15$ph = 0, $$1511 = 0, $$17$ph = 0, $$1710 = 0, $$2$ph = 0, $$212 = 0, $$28 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $16 = 0, $20 = 0, $26 = 0, $27 = 0, $28 = 0, $31 = 0, $35 = 0, $7 = 0, $8 = 0, $wd$0$lcssa = 0, $wd$018 = 0, $ws$0$lcssa = 0, $ws$019 = 0, label = 0;
 $0 = $s;
 do if (!(($0 ^ $d) & 3)) {
  $7 = ($n | 0) != 0;
  L3 : do if ($7 & ($0 & 3 | 0) != 0) {
   $$031 = $n;
   $$0430 = $s;
   $$0629 = $d;
   while (1) {
    $8 = HEAP8[$$0430 >> 0] | 0;
    HEAP8[$$0629 >> 0] = $8;
    if (!($8 << 24 >> 24)) {
     $$0$lcssa60 = $$031;
     $$04$lcssa61 = $$0430;
     $$06$lcssa62 = $$0629;
     break L3;
    }
    $10 = $$031 + -1 | 0;
    $11 = $$0430 + 1 | 0;
    $12 = $$0629 + 1 | 0;
    $16 = ($10 | 0) != 0;
    if ($16 & ($11 & 3 | 0) != 0) {
     $$031 = $10;
     $$0430 = $11;
     $$0629 = $12;
    } else {
     $$0$lcssa = $10;
     $$04$lcssa = $11;
     $$06$lcssa = $12;
     $$lcssa = $16;
     label = 5;
     break;
    }
   }
  } else {
   $$0$lcssa = $n;
   $$04$lcssa = $s;
   $$06$lcssa = $d;
   $$lcssa = $7;
   label = 5;
  } while (0);
  if ((label | 0) == 5) if ($$lcssa) {
   $$0$lcssa60 = $$0$lcssa;
   $$04$lcssa61 = $$04$lcssa;
   $$06$lcssa62 = $$06$lcssa;
  } else {
   $$28 = $$06$lcssa;
   $$3 = 0;
   break;
  }
  if (!(HEAP8[$$04$lcssa61 >> 0] | 0)) {
   $$28 = $$06$lcssa62;
   $$3 = $$0$lcssa60;
  } else {
   L11 : do if ($$0$lcssa60 >>> 0 > 3) {
    $$117 = $$0$lcssa60;
    $wd$018 = $$06$lcssa62;
    $ws$019 = $$04$lcssa61;
    while (1) {
     $20 = HEAP32[$ws$019 >> 2] | 0;
     if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) {
      $$1$lcssa = $$117;
      $wd$0$lcssa = $wd$018;
      $ws$0$lcssa = $ws$019;
      break L11;
     }
     HEAP32[$wd$018 >> 2] = $20;
     $26 = $$117 + -4 | 0;
     $27 = $ws$019 + 4 | 0;
     $28 = $wd$018 + 4 | 0;
     if ($26 >>> 0 > 3) {
      $$117 = $26;
      $wd$018 = $28;
      $ws$019 = $27;
     } else {
      $$1$lcssa = $26;
      $wd$0$lcssa = $28;
      $ws$0$lcssa = $27;
      break;
     }
    }
   } else {
    $$1$lcssa = $$0$lcssa60;
    $wd$0$lcssa = $$06$lcssa62;
    $ws$0$lcssa = $$04$lcssa61;
   } while (0);
   $$15$ph = $ws$0$lcssa;
   $$17$ph = $wd$0$lcssa;
   $$2$ph = $$1$lcssa;
   label = 11;
  }
 } else {
  $$15$ph = $s;
  $$17$ph = $d;
  $$2$ph = $n;
  label = 11;
 } while (0);
 L16 : do if ((label | 0) == 11) if (!$$2$ph) {
  $$28 = $$17$ph;
  $$3 = 0;
 } else {
  $$1511 = $$15$ph;
  $$1710 = $$17$ph;
  $$212 = $$2$ph;
  while (1) {
   $31 = HEAP8[$$1511 >> 0] | 0;
   HEAP8[$$1710 >> 0] = $31;
   if (!($31 << 24 >> 24)) {
    $$28 = $$1710;
    $$3 = $$212;
    break L16;
   }
   $$212 = $$212 + -1 | 0;
   $35 = $$1710 + 1 | 0;
   if (!$$212) {
    $$28 = $35;
    $$3 = 0;
    break;
   } else {
    $$1511 = $$1511 + 1 | 0;
    $$1710 = $35;
   }
  }
 } while (0);
 _memset($$28 | 0, 0, $$3 | 0) | 0;
 return $$28 | 0;
}

function ___stdio_write($f, $buf, $len) {
 $f = $f | 0;
 $buf = $buf | 0;
 $len = $len | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $16 = 0, $21 = 0, $26 = 0, $3 = 0, $35 = 0, $37 = 0, $39 = 0, $50 = 0, $6 = 0, $cnt$0 = 0, $cnt$1 = 0, $iov$0 = 0, $iov$0$lcssa11 = 0, $iov$1 = 0, $iovcnt$0 = 0, $iovcnt$0$lcssa12 = 0, $iovcnt$1 = 0, $iovs = 0, $rem$0 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer = sp;
 $iovs = sp + 32 | 0;
 $0 = $f + 28 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 HEAP32[$iovs >> 2] = $1;
 $3 = $f + 20 | 0;
 $6 = (HEAP32[$3 >> 2] | 0) - $1 | 0;
 HEAP32[$iovs + 4 >> 2] = $6;
 HEAP32[$iovs + 8 >> 2] = $buf;
 HEAP32[$iovs + 12 >> 2] = $len;
 $10 = $f + 60 | 0;
 $11 = $f + 44 | 0;
 $iov$0 = $iovs;
 $iovcnt$0 = 2;
 $rem$0 = $6 + $len | 0;
 while (1) {
  if (!(HEAP32[597] | 0)) {
   HEAP32[$vararg_buffer3 >> 2] = HEAP32[$10 >> 2];
   HEAP32[$vararg_buffer3 + 4 >> 2] = $iov$0;
   HEAP32[$vararg_buffer3 + 8 >> 2] = $iovcnt$0;
   $cnt$0 = ___syscall_ret(___syscall146(146, $vararg_buffer3 | 0) | 0) | 0;
  } else {
   _pthread_cleanup_push(14, $f | 0);
   HEAP32[$vararg_buffer >> 2] = HEAP32[$10 >> 2];
   HEAP32[$vararg_buffer + 4 >> 2] = $iov$0;
   HEAP32[$vararg_buffer + 8 >> 2] = $iovcnt$0;
   $16 = ___syscall_ret(___syscall146(146, $vararg_buffer | 0) | 0) | 0;
   _pthread_cleanup_pop(0);
   $cnt$0 = $16;
  }
  if (($rem$0 | 0) == ($cnt$0 | 0)) {
   label = 6;
   break;
  }
  if (($cnt$0 | 0) < 0) {
   $iov$0$lcssa11 = $iov$0;
   $iovcnt$0$lcssa12 = $iovcnt$0;
   label = 8;
   break;
  }
  $35 = $rem$0 - $cnt$0 | 0;
  $37 = HEAP32[$iov$0 + 4 >> 2] | 0;
  if ($cnt$0 >>> 0 > $37 >>> 0) {
   $39 = HEAP32[$11 >> 2] | 0;
   HEAP32[$0 >> 2] = $39;
   HEAP32[$3 >> 2] = $39;
   $50 = HEAP32[$iov$0 + 12 >> 2] | 0;
   $cnt$1 = $cnt$0 - $37 | 0;
   $iov$1 = $iov$0 + 8 | 0;
   $iovcnt$1 = $iovcnt$0 + -1 | 0;
  } else if (($iovcnt$0 | 0) == 2) {
   HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + $cnt$0;
   $50 = $37;
   $cnt$1 = $cnt$0;
   $iov$1 = $iov$0;
   $iovcnt$1 = 2;
  } else {
   $50 = $37;
   $cnt$1 = $cnt$0;
   $iov$1 = $iov$0;
   $iovcnt$1 = $iovcnt$0;
  }
  HEAP32[$iov$1 >> 2] = (HEAP32[$iov$1 >> 2] | 0) + $cnt$1;
  HEAP32[$iov$1 + 4 >> 2] = $50 - $cnt$1;
  $iov$0 = $iov$1;
  $iovcnt$0 = $iovcnt$1;
  $rem$0 = $35;
 }
 if ((label | 0) == 6) {
  $21 = HEAP32[$11 >> 2] | 0;
  HEAP32[$f + 16 >> 2] = $21 + (HEAP32[$f + 48 >> 2] | 0);
  $26 = $21;
  HEAP32[$0 >> 2] = $26;
  HEAP32[$3 >> 2] = $26;
  $$0 = $len;
 } else if ((label | 0) == 8) {
  HEAP32[$f + 16 >> 2] = 0;
  HEAP32[$0 >> 2] = 0;
  HEAP32[$3 >> 2] = 0;
  HEAP32[$f >> 2] = HEAP32[$f >> 2] | 32;
  if (($iovcnt$0$lcssa12 | 0) == 2) $$0 = 0; else $$0 = $len - (HEAP32[$iov$0$lcssa11 + 4 >> 2] | 0) | 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _pop_arg($arg, $type, $ap) {
 $arg = $arg | 0;
 $type = $type | 0;
 $ap = $ap | 0;
 var $105 = 0, $106 = 0.0, $112 = 0, $113 = 0.0, $13 = 0, $14 = 0, $17 = 0, $26 = 0, $27 = 0, $28 = 0, $37 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $53 = 0, $54 = 0, $56 = 0, $59 = 0, $6 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $79 = 0, $80 = 0, $82 = 0, $85 = 0, $94 = 0, $95 = 0, $96 = 0;
 L1 : do if ($type >>> 0 <= 20) do switch ($type | 0) {
 case 9:
  {
   $6 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $7 = HEAP32[$6 >> 2] | 0;
   HEAP32[$ap >> 2] = $6 + 4;
   HEAP32[$arg >> 2] = $7;
   break L1;
   break;
  }
 case 10:
  {
   $13 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $14 = HEAP32[$13 >> 2] | 0;
   HEAP32[$ap >> 2] = $13 + 4;
   $17 = $arg;
   HEAP32[$17 >> 2] = $14;
   HEAP32[$17 + 4 >> 2] = (($14 | 0) < 0) << 31 >> 31;
   break L1;
   break;
  }
 case 11:
  {
   $26 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $27 = HEAP32[$26 >> 2] | 0;
   HEAP32[$ap >> 2] = $26 + 4;
   $28 = $arg;
   HEAP32[$28 >> 2] = $27;
   HEAP32[$28 + 4 >> 2] = 0;
   break L1;
   break;
  }
 case 12:
  {
   $37 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);
   $38 = $37;
   $40 = HEAP32[$38 >> 2] | 0;
   $43 = HEAP32[$38 + 4 >> 2] | 0;
   HEAP32[$ap >> 2] = $37 + 8;
   $44 = $arg;
   HEAP32[$44 >> 2] = $40;
   HEAP32[$44 + 4 >> 2] = $43;
   break L1;
   break;
  }
 case 13:
  {
   $53 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $54 = HEAP32[$53 >> 2] | 0;
   HEAP32[$ap >> 2] = $53 + 4;
   $56 = ($54 & 65535) << 16 >> 16;
   $59 = $arg;
   HEAP32[$59 >> 2] = $56;
   HEAP32[$59 + 4 >> 2] = (($56 | 0) < 0) << 31 >> 31;
   break L1;
   break;
  }
 case 14:
  {
   $68 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $69 = HEAP32[$68 >> 2] | 0;
   HEAP32[$ap >> 2] = $68 + 4;
   $70 = $arg;
   HEAP32[$70 >> 2] = $69 & 65535;
   HEAP32[$70 + 4 >> 2] = 0;
   break L1;
   break;
  }
 case 15:
  {
   $79 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $80 = HEAP32[$79 >> 2] | 0;
   HEAP32[$ap >> 2] = $79 + 4;
   $82 = ($80 & 255) << 24 >> 24;
   $85 = $arg;
   HEAP32[$85 >> 2] = $82;
   HEAP32[$85 + 4 >> 2] = (($82 | 0) < 0) << 31 >> 31;
   break L1;
   break;
  }
 case 16:
  {
   $94 = (HEAP32[$ap >> 2] | 0) + (4 - 1) & ~(4 - 1);
   $95 = HEAP32[$94 >> 2] | 0;
   HEAP32[$ap >> 2] = $94 + 4;
   $96 = $arg;
   HEAP32[$96 >> 2] = $95 & 255;
   HEAP32[$96 + 4 >> 2] = 0;
   break L1;
   break;
  }
 case 17:
  {
   $105 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);
   $106 = +HEAPF64[$105 >> 3];
   HEAP32[$ap >> 2] = $105 + 8;
   HEAPF64[$arg >> 3] = $106;
   break L1;
   break;
  }
 case 18:
  {
   $112 = (HEAP32[$ap >> 2] | 0) + (8 - 1) & ~(8 - 1);
   $113 = +HEAPF64[$112 >> 3];
   HEAP32[$ap >> 2] = $112 + 8;
   HEAPF64[$arg >> 3] = $113;
   break L1;
   break;
  }
 default:
  break L1;
 } while (0); while (0);
 return;
}

function _arPattCreateHandle2($pattSize, $patternCountMax) {
 $pattSize = $pattSize | 0;
 $patternCountMax = $patternCountMax | 0;
 var $$0 = 0, $10 = 0, $11 = 0, $14 = 0, $15 = 0, $17 = 0, $18 = 0, $2 = 0, $21 = 0, $24 = 0, $25 = 0, $26 = 0, $29 = 0, $31 = 0, $32 = 0, $35 = 0, $7 = 0, $i$04 = 0, $j$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer11 = 0, $vararg_buffer13 = 0, $vararg_buffer3 = 0, $vararg_buffer5 = 0, $vararg_buffer7 = 0, $vararg_buffer9 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer13 = sp + 56 | 0;
 $vararg_buffer11 = sp + 48 | 0;
 $vararg_buffer9 = sp + 40 | 0;
 $vararg_buffer7 = sp + 32 | 0;
 $vararg_buffer5 = sp + 24 | 0;
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 L1 : do if (($pattSize + -16 | 0) >>> 0 > 48 | ($patternCountMax | 0) < 1) $$0 = 0; else {
  $2 = _malloc(32) | 0;
  if (!$2) {
   _arLog(3, 5471, $vararg_buffer);
   _exit(1);
  }
  HEAP32[$2 >> 2] = 0;
  HEAP32[$2 + 4 >> 2] = $patternCountMax;
  HEAP32[$2 + 28 >> 2] = $pattSize;
  $7 = _malloc($patternCountMax << 2) | 0;
  HEAP32[$2 + 8 >> 2] = $7;
  if (!$7) {
   _arLog(3, 5471, $vararg_buffer1);
   _exit(1);
  }
  $10 = $patternCountMax << 4;
  $11 = _malloc($10) | 0;
  HEAP32[$2 + 12 >> 2] = $11;
  if (!$11) {
   _arLog(3, 5471, $vararg_buffer3);
   _exit(1);
  }
  $14 = _malloc($10) | 0;
  $15 = $2 + 20 | 0;
  HEAP32[$15 >> 2] = $14;
  if (!$14) {
   _arLog(3, 5471, $vararg_buffer5);
   _exit(1);
  }
  $17 = $patternCountMax << 5;
  $18 = _malloc($17) | 0;
  HEAP32[$2 + 16 >> 2] = $18;
  if (!$18) {
   _arLog(3, 5471, $vararg_buffer7);
   _exit(1);
  }
  $21 = _malloc($17) | 0;
  HEAP32[$2 + 24 >> 2] = $21;
  if (!$21) {
   _arLog(3, 5471, $vararg_buffer9);
   _exit(1);
  }
  $24 = Math_imul($pattSize, $pattSize) | 0;
  $25 = $24 * 12 | 0;
  $26 = $24 << 2;
  if (($patternCountMax | 0) > 0) {
   $i$04 = 0;
   L21 : while (1) {
    HEAP32[$7 + ($i$04 << 2) >> 2] = 0;
    $29 = $i$04 << 2;
    $j$0 = 0;
    while (1) {
     if (($j$0 | 0) >= 4) break;
     $31 = _malloc($25) | 0;
     $32 = $j$0 + $29 | 0;
     HEAP32[$11 + ($32 << 2) >> 2] = $31;
     if (!$31) {
      label = 18;
      break L21;
     }
     $35 = _malloc($26) | 0;
     HEAP32[(HEAP32[$15 >> 2] | 0) + ($32 << 2) >> 2] = $35;
     if (!$35) {
      label = 20;
      break L21;
     } else $j$0 = $j$0 + 1 | 0;
    }
    $i$04 = $i$04 + 1 | 0;
    if (($i$04 | 0) >= ($patternCountMax | 0)) {
     $$0 = $2;
     break L1;
    }
   }
   if ((label | 0) == 18) {
    _arLog(3, 5471, $vararg_buffer11);
    _exit(1);
   } else if ((label | 0) == 20) {
    _arLog(3, 5471, $vararg_buffer13);
    _exit(1);
   }
  } else $$0 = $2;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arParamChangeSize($source, $xsize, $ysize, $newparam) {
 $source = $source | 0;
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $newparam = $newparam | 0;
 var $$0 = 0, $23 = 0, $3 = 0.0, $8 = 0.0, $i$01 = 0, label = 0;
 $3 = +($xsize | 0) / +(HEAP32[$source >> 2] | 0);
 $8 = +($ysize | 0) / +(HEAP32[$source + 4 >> 2] | 0);
 HEAP32[$newparam >> 2] = $xsize;
 HEAP32[$newparam + 4 >> 2] = $ysize;
 $i$01 = 0;
 do {
  HEAPF64[$newparam + 8 + ($i$01 << 3) >> 3] = $3 * +HEAPF64[$source + 8 + ($i$01 << 3) >> 3];
  HEAPF64[$newparam + 40 + ($i$01 << 3) >> 3] = $8 * +HEAPF64[$source + 40 + ($i$01 << 3) >> 3];
  HEAPF64[$newparam + 72 + ($i$01 << 3) >> 3] = +HEAPF64[$source + 72 + ($i$01 << 3) >> 3];
  $i$01 = $i$01 + 1 | 0;
 } while (($i$01 | 0) != 4);
 $23 = HEAP32[$source + 176 >> 2] | 0;
 switch ($23 | 0) {
 case 4:
  {
   HEAPF64[$newparam + 104 >> 3] = +HEAPF64[$source + 104 >> 3];
   HEAPF64[$newparam + 112 >> 3] = +HEAPF64[$source + 112 >> 3];
   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];
   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3];
   HEAPF64[$newparam + 136 >> 3] = $3 * +HEAPF64[$source + 136 >> 3];
   HEAPF64[$newparam + 144 >> 3] = $8 * +HEAPF64[$source + 144 >> 3];
   HEAPF64[$newparam + 152 >> 3] = $3 * +HEAPF64[$source + 152 >> 3];
   HEAPF64[$newparam + 160 >> 3] = $8 * +HEAPF64[$source + 160 >> 3];
   HEAPF64[$newparam + 168 >> 3] = +HEAPF64[$source + 168 >> 3];
   label = 8;
   break;
  }
 case 3:
  {
   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];
   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];
   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];
   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3];
   HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($3 * $8);
   HEAPF64[$newparam + 144 >> 3] = +HEAPF64[$source + 144 >> 3] / ($8 * ($3 * $3 * $8));
   label = 8;
   break;
  }
 case 2:
  {
   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];
   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];
   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];
   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8);
   HEAPF64[$newparam + 136 >> 3] = +HEAPF64[$source + 136 >> 3] / ($8 * ($3 * $3 * $8));
   label = 8;
   break;
  }
 case 1:
  {
   HEAPF64[$newparam + 104 >> 3] = $3 * +HEAPF64[$source + 104 >> 3];
   HEAPF64[$newparam + 112 >> 3] = $8 * +HEAPF64[$source + 112 >> 3];
   HEAPF64[$newparam + 120 >> 3] = +HEAPF64[$source + 120 >> 3];
   HEAPF64[$newparam + 128 >> 3] = +HEAPF64[$source + 128 >> 3] / ($3 * $8);
   label = 8;
   break;
  }
 default:
  $$0 = -1;
 }
 if ((label | 0) == 8) {
  HEAP32[$newparam + 176 >> 2] = $23;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _icpUpdateMat($matXw2Xc, $dS) {
 $matXw2Xc = $matXw2Xc | 0;
 $dS = $dS | 0;
 var $$sink$i = 0.0, $$sink1$i = 0.0, $0 = 0.0, $11 = 0.0, $16 = 0.0, $18 = 0.0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $25 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0.0, $35 = 0.0, $36 = 0.0, $47 = 0.0, $48 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $7 = 0.0, $82 = 0, $9 = 0.0, $i$08 = 0, $j$09 = 0, $j$17 = 0, $mat = 0, $mat2 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 192 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $mat = sp + 96 | 0;
 $mat2 = sp;
 $0 = +HEAPF64[$dS >> 3];
 $3 = +HEAPF64[$dS + 8 >> 3];
 $7 = +HEAPF64[$dS + 16 >> 3];
 $9 = $0 * $0 + $3 * $3 + $7 * $7;
 if ($9 == 0.0) {
  $$sink$i = 0.0;
  $$sink1$i = 0.0;
  $25 = 1.0;
  $29 = 0.0;
 } else {
  $11 = +Math_sqrt(+$9);
  $$sink$i = $11;
  $$sink1$i = $7 / $11;
  $25 = $0 / $11;
  $29 = $3 / $11;
 }
 $16 = +HEAPF64[$dS + 24 >> 3];
 $18 = +HEAPF64[$dS + 32 >> 3];
 $20 = +HEAPF64[$dS + 40 >> 3];
 $21 = +Math_cos(+$$sink$i);
 $22 = 1.0 - $21;
 $23 = +Math_sin(+$$sink$i);
 HEAPF64[$mat >> 3] = $21 + $25 * $25 * $22;
 $30 = $29 * $25 * $22;
 $31 = $$sink1$i * $23;
 HEAPF64[$mat + 8 >> 3] = $30 - $31;
 $35 = $25 * $$sink1$i * $22;
 $36 = $29 * $23;
 HEAPF64[$mat + 16 >> 3] = $35 + $36;
 HEAPF64[$mat + 24 >> 3] = $16;
 HEAPF64[$mat + 32 >> 3] = $30 + $31;
 HEAPF64[$mat + 40 >> 3] = $21 + $29 * $29 * $22;
 $47 = $29 * $$sink1$i * $22;
 $48 = $25 * $23;
 HEAPF64[$mat + 48 >> 3] = $47 - $48;
 HEAPF64[$mat + 56 >> 3] = $18;
 HEAPF64[$mat + 64 >> 3] = $35 - $36;
 HEAPF64[$mat + 72 >> 3] = $47 + $48;
 HEAPF64[$mat + 80 >> 3] = $21 + $$sink1$i * $$sink1$i * $22;
 HEAPF64[$mat + 88 >> 3] = $20;
 $j$09 = 0;
 do {
  $64 = +HEAPF64[$matXw2Xc + ($j$09 << 5) >> 3];
  $65 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 8 >> 3];
  $66 = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 16 >> 3];
  $i$08 = 0;
  do {
   HEAPF64[$mat2 + ($j$09 << 5) + ($i$08 << 3) >> 3] = $64 * +HEAPF64[$mat + ($i$08 << 3) >> 3] + $65 * +HEAPF64[$mat + 32 + ($i$08 << 3) >> 3] + $66 * +HEAPF64[$mat + 64 + ($i$08 << 3) >> 3];
   $i$08 = $i$08 + 1 | 0;
  } while (($i$08 | 0) != 4);
  $82 = $mat2 + ($j$09 << 5) + 24 | 0;
  HEAPF64[$82 >> 3] = +HEAPF64[$matXw2Xc + ($j$09 << 5) + 24 >> 3] + +HEAPF64[$82 >> 3];
  $j$09 = $j$09 + 1 | 0;
 } while (($j$09 | 0) != 3);
 $j$17 = 0;
 do {
  HEAPF64[$matXw2Xc + ($j$17 << 5) >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) >> 3];
  HEAPF64[$matXw2Xc + ($j$17 << 5) + 8 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 8 >> 3];
  HEAPF64[$matXw2Xc + ($j$17 << 5) + 16 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 16 >> 3];
  HEAPF64[$matXw2Xc + ($j$17 << 5) + 24 >> 3] = +HEAPF64[$mat2 + ($j$17 << 5) + 24 >> 3];
  $j$17 = $j$17 + 1 | 0;
 } while (($j$17 | 0) != 3);
 STACKTOP = sp;
 return 0;
}

function _setCamera($id, $cameraID) {
 $id = $id | 0;
 $cameraID = $cameraID | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $14 = 0, $15 = 0, $20 = 0, $21 = 0, $23 = 0, $24 = 0, $26 = 0, $4 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer2 = 0, $vararg_buffer4 = 0, $vararg_buffer6 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer6 = sp + 24 | 0;
 $vararg_buffer4 = sp + 16 | 0;
 $vararg_buffer2 = sp + 8 | 0;
 $vararg_buffer = sp;
 $0 = sp + 32 | 0;
 $1 = sp + 28 | 0;
 HEAP32[$0 >> 2] = $id;
 HEAP32[$1 >> 2] = $cameraID;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2064, $1) | 0)) $$0 = -1; else {
   $7 = $4 + 8 | 0;
   _memcpy($7 | 0, __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $1) | 0, 184) | 0;
   $9 = HEAP32[$7 >> 2] | 0;
   $10 = $4 + 204 | 0;
   $14 = HEAP32[$4 + 12 >> 2] | 0;
   $15 = $4 + 208 | 0;
   if (!(($9 | 0) == (HEAP32[$10 >> 2] | 0) ? ($14 | 0) == (HEAP32[$15 >> 2] | 0) : 0)) {
    HEAP32[$vararg_buffer >> 2] = $9;
    HEAP32[$vararg_buffer + 4 >> 2] = $14;
    _arLog(2, 6151, $vararg_buffer);
    _arParamChangeSize($7, HEAP32[$10 >> 2] | 0, HEAP32[$15 >> 2] | 0, $7) | 0;
   }
   _deleteHandle($4);
   $20 = _arParamLTCreate($7, 15) | 0;
   $21 = $4 + 192 | 0;
   HEAP32[$21 >> 2] = $20;
   if (!$20) {
    _arLog(3, 6198, $vararg_buffer2);
    $$0 = -1;
    break;
   }
   $23 = _arCreateHandle($20) | 0;
   $24 = $4 + 212 | 0;
   HEAP32[$24 >> 2] = $23;
   if (!$23) {
    _arLog(3, 6236, $vararg_buffer4);
    $$0 = -1;
    break;
   }
   _arSetPixelFormat($23, 2) | 0;
   $26 = _ar3DCreateHandle($7) | 0;
   HEAP32[$4 + 224 >> 2] = $26;
   if (!$26) {
    _arLog(3, 6273, $vararg_buffer6);
    $$0 = -1;
    break;
   } else {
    _arPattAttach(HEAP32[$24 >> 2] | 0, HEAP32[$4 + 216 >> 2] | 0) | 0;
    _arglCameraFrustum(HEAP32[$21 >> 2] | 0, +HEAPF64[$4 + 232 >> 3], +HEAPF64[$4 + 240 >> 3], $4 + 264 | 0);
    $$0 = 0;
    break;
   }
  }
 } while (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$lcssa44 = 0, $$019 = 0, $$1$lcssa = 0, $$110 = 0, $$110$lcssa = 0, $$24 = 0, $$3 = 0, $$lcssa = 0, $0 = 0, $13 = 0, $15 = 0, $17 = 0, $20 = 0, $26 = 0, $27 = 0, $32 = 0, $4 = 0, $5 = 0, $8 = 0, $9 = 0, $s$0$lcssa = 0, $s$0$lcssa43 = 0, $s$020 = 0, $s$15 = 0, $s$2 = 0, $w$0$lcssa = 0, $w$011 = 0, $w$011$lcssa = 0, label = 0;
 $0 = $c & 255;
 $4 = ($n | 0) != 0;
 L1 : do if ($4 & ($src & 3 | 0) != 0) {
  $5 = $c & 255;
  $$019 = $n;
  $s$020 = $src;
  while (1) {
   if ((HEAP8[$s$020 >> 0] | 0) == $5 << 24 >> 24) {
    $$0$lcssa44 = $$019;
    $s$0$lcssa43 = $s$020;
    label = 6;
    break L1;
   }
   $8 = $s$020 + 1 | 0;
   $9 = $$019 + -1 | 0;
   $13 = ($9 | 0) != 0;
   if ($13 & ($8 & 3 | 0) != 0) {
    $$019 = $9;
    $s$020 = $8;
   } else {
    $$0$lcssa = $9;
    $$lcssa = $13;
    $s$0$lcssa = $8;
    label = 5;
    break;
   }
  }
 } else {
  $$0$lcssa = $n;
  $$lcssa = $4;
  $s$0$lcssa = $src;
  label = 5;
 } while (0);
 if ((label | 0) == 5) if ($$lcssa) {
  $$0$lcssa44 = $$0$lcssa;
  $s$0$lcssa43 = $s$0$lcssa;
  label = 6;
 } else {
  $$3 = 0;
  $s$2 = $s$0$lcssa;
 }
 L8 : do if ((label | 0) == 6) {
  $15 = $c & 255;
  if ((HEAP8[$s$0$lcssa43 >> 0] | 0) == $15 << 24 >> 24) {
   $$3 = $$0$lcssa44;
   $s$2 = $s$0$lcssa43;
  } else {
   $17 = Math_imul($0, 16843009) | 0;
   L11 : do if ($$0$lcssa44 >>> 0 > 3) {
    $$110 = $$0$lcssa44;
    $w$011 = $s$0$lcssa43;
    while (1) {
     $20 = HEAP32[$w$011 >> 2] ^ $17;
     if (($20 & -2139062144 ^ -2139062144) & $20 + -16843009) {
      $$110$lcssa = $$110;
      $w$011$lcssa = $w$011;
      break;
     }
     $26 = $w$011 + 4 | 0;
     $27 = $$110 + -4 | 0;
     if ($27 >>> 0 > 3) {
      $$110 = $27;
      $w$011 = $26;
     } else {
      $$1$lcssa = $27;
      $w$0$lcssa = $26;
      label = 11;
      break L11;
     }
    }
    $$24 = $$110$lcssa;
    $s$15 = $w$011$lcssa;
   } else {
    $$1$lcssa = $$0$lcssa44;
    $w$0$lcssa = $s$0$lcssa43;
    label = 11;
   } while (0);
   if ((label | 0) == 11) if (!$$1$lcssa) {
    $$3 = 0;
    $s$2 = $w$0$lcssa;
    break;
   } else {
    $$24 = $$1$lcssa;
    $s$15 = $w$0$lcssa;
   }
   while (1) {
    if ((HEAP8[$s$15 >> 0] | 0) == $15 << 24 >> 24) {
     $$3 = $$24;
     $s$2 = $s$15;
     break L8;
    }
    $32 = $s$15 + 1 | 0;
    $$24 = $$24 + -1 | 0;
    if (!$$24) {
     $$3 = 0;
     $s$2 = $32;
     break;
    } else $s$15 = $32;
   }
  }
 } while (0);
 return (($$3 | 0) != 0 ? $s$2 : 0) | 0;
}

function _getMarkerInfo($id, $markerIndex) {
 $id = $id | 0;
 $markerIndex = $markerIndex | 0;
 var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $6 = HEAP32[$5 >> 2] | 0;
  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {
   $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0;
   _emscripten_asm_const_33(1, HEAP32[$_ZL11gMarkerInfo$ >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 4 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 8 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 12 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 16 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 20 >> 2] | 0, HEAP32[$_ZL11gMarkerInfo$ + 24 >> 2] | 0, +(+HEAPF64[$_ZL11gMarkerInfo$ + 32 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 40 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 48 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 72 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 80 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 88 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 96 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 104 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 112 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 120 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 128 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 136 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 144 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 152 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 160 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3]), +(+HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3]), HEAP32[$_ZL11gMarkerInfo$ + 240 >> 2] | 0) | 0;
   $$0 = 0;
   break;
  } else {
   $$0 = HEAP32[523] | 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_114parse_decltypeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$03 = 0, $0 = 0, $1 = 0, $13 = 0, $14 = 0, $2 = 0, $21 = 0, $23 = 0, $24 = 0, $27 = 0, $3 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 40 | 0;
 $1 = sp + 24 | 0;
 $2 = sp + 12 | 0;
 $3 = sp;
 L1 : do if (($last - $first | 0) > 3) if ((HEAP8[$first >> 0] | 0) == 68) {
  switch (HEAP8[$first + 1 >> 0] | 0) {
  case 84:
  case 116:
   break;
  default:
   {
    $$03 = $first;
    break L1;
   }
  }
  $13 = $first + 2 | 0;
  $14 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($13, $last, $db) | 0;
  if (($14 | 0) == ($13 | 0) | ($14 | 0) == ($last | 0)) $$03 = $first; else if ((HEAP8[$14 >> 0] | 0) == 69) {
   $21 = HEAP32[$db + 4 >> 2] | 0;
   if ((HEAP32[$db >> 2] | 0) == ($21 | 0)) $$03 = $first; else {
    $23 = $21 + -24 | 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($3, $23);
    $24 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($3, 0, 12803) | 0;
    HEAP32[$2 >> 2] = HEAP32[$24 >> 2];
    HEAP32[$2 + 4 >> 2] = HEAP32[$24 + 4 >> 2];
    HEAP32[$2 + 8 >> 2] = HEAP32[$24 + 8 >> 2];
    HEAP32[$24 >> 2] = 0;
    HEAP32[$24 + 4 >> 2] = 0;
    HEAP32[$24 + 8 >> 2] = 0;
    $27 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($2, 12619) | 0;
    HEAP32[$1 >> 2] = HEAP32[$27 >> 2];
    HEAP32[$1 + 4 >> 2] = HEAP32[$27 + 4 >> 2];
    HEAP32[$1 + 8 >> 2] = HEAP32[$27 + 8 >> 2];
    HEAP32[$27 >> 2] = 0;
    HEAP32[$27 + 4 >> 2] = 0;
    HEAP32[$27 + 8 >> 2] = 0;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($0, $1);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairaSEOS1_($23, $0);
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($0);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($1);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($2);
    __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($3);
    $$03 = $14 + 1 | 0;
   }
  } else $$03 = $first;
 } else $$03 = $first; else $$03 = $first; while (0);
 STACKTOP = sp;
 return $$03 | 0;
}

function ___fdopen($fd, $mode) {
 $fd = $fd | 0;
 $mode = $mode | 0;
 var $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $19 = 0, $24 = 0, $26 = 0, $3 = 0, $37 = 0, $4 = 0, $tio = 0, $vararg_buffer = 0, $vararg_buffer12 = 0, $vararg_buffer3 = 0, $vararg_buffer7 = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer12 = sp + 40 | 0;
 $vararg_buffer7 = sp + 24 | 0;
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer = sp;
 $tio = sp + 52 | 0;
 $0 = HEAP8[$mode >> 0] | 0;
 if (!(_memchr(16759, $0 << 24 >> 24, 4) | 0)) {
  $3 = ___errno_location() | 0;
  HEAP32[$3 >> 2] = 22;
  $$0 = 0;
 } else {
  $4 = _malloc(1144) | 0;
  if (!$4) $$0 = 0; else {
   dest = $4;
   stop = dest + 112 | 0;
   do {
    HEAP32[dest >> 2] = 0;
    dest = dest + 4 | 0;
   } while ((dest | 0) < (stop | 0));
   if (!(_strchr($mode, 43) | 0)) HEAP32[$4 >> 2] = $0 << 24 >> 24 == 114 ? 8 : 4;
   if (!(_strchr($mode, 101) | 0)) $13 = $0; else {
    HEAP32[$vararg_buffer >> 2] = $fd;
    HEAP32[$vararg_buffer + 4 >> 2] = 2;
    HEAP32[$vararg_buffer + 8 >> 2] = 1;
    ___syscall221(221, $vararg_buffer | 0) | 0;
    $13 = HEAP8[$mode >> 0] | 0;
   }
   if ($13 << 24 >> 24 == 97) {
    HEAP32[$vararg_buffer3 >> 2] = $fd;
    HEAP32[$vararg_buffer3 + 4 >> 2] = 3;
    $14 = ___syscall221(221, $vararg_buffer3 | 0) | 0;
    if (!($14 & 1024)) {
     HEAP32[$vararg_buffer7 >> 2] = $fd;
     HEAP32[$vararg_buffer7 + 4 >> 2] = 4;
     HEAP32[$vararg_buffer7 + 8 >> 2] = $14 | 1024;
     ___syscall221(221, $vararg_buffer7 | 0) | 0;
    }
    $19 = HEAP32[$4 >> 2] | 128;
    HEAP32[$4 >> 2] = $19;
    $26 = $19;
   } else $26 = HEAP32[$4 >> 2] | 0;
   HEAP32[$4 + 60 >> 2] = $fd;
   HEAP32[$4 + 44 >> 2] = $4 + 120;
   HEAP32[$4 + 48 >> 2] = 1024;
   $24 = $4 + 75 | 0;
   HEAP8[$24 >> 0] = -1;
   if (!($26 & 8)) {
    HEAP32[$vararg_buffer12 >> 2] = $fd;
    HEAP32[$vararg_buffer12 + 4 >> 2] = 21505;
    HEAP32[$vararg_buffer12 + 8 >> 2] = $tio;
    if (!(___syscall54(54, $vararg_buffer12 | 0) | 0)) HEAP8[$24 >> 0] = 10;
   }
   HEAP32[$4 + 32 >> 2] = 14;
   HEAP32[$4 + 36 >> 2] = 4;
   HEAP32[$4 + 40 >> 2] = 5;
   HEAP32[$4 + 12 >> 2] = 2;
   if (!(HEAP32[598] | 0)) HEAP32[$4 + 76 >> 2] = -1;
   ___lock(2416);
   $37 = HEAP32[603] | 0;
   HEAP32[$4 + 56 >> 2] = $37;
   if ($37) HEAP32[$37 + 52 >> 2] = $4;
   HEAP32[603] = $4;
   ___unlock(2416);
   $$0 = $4;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _addMultiMarker($id, $patt_name) {
 $id = $id | 0;
 $patt_name = $patt_name | 0;
 var $$0 = 0, $0 = 0, $11 = 0, $12 = 0, $13 = 0, $15 = 0, $16 = 0, $21 = 0, $22 = 0, $23 = 0, $28 = 0, $29 = 0, $3 = 0, $38 = 0, $40 = 0, $43 = 0, $44 = 0, $marker = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 16 | 0;
 $vararg_buffer = sp + 8 | 0;
 $0 = sp + 20 | 0;
 $marker = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if (!(HEAP8[$patt_name >> 0] & 1)) $15 = $patt_name + 1 | 0; else $15 = HEAP32[$patt_name + 8 >> 2] | 0;
  $11 = HEAP32[$3 + 212 >> 2] | 0;
  $12 = $3 + 216 | 0;
  $13 = $3 + 220 | 0;
  $16 = _arMultiReadConfigFile($15, HEAP32[$12 >> 2] | 0) | 0;
  HEAP32[$13 >> 2] = $16;
  if (!$16) {
   _arLog(3, 6401, $vararg_buffer);
   _arPattDeleteHandle(HEAP32[$12 >> 2] | 0) | 0;
   _arLog(3, 6428, $vararg_buffer1);
   $$0 = -1;
   break;
  }
  switch (HEAP32[$16 + 108 >> 2] | 0) {
  case 0:
   {
    _arSetPatternDetectionMode($11, 0) | 0;
    break;
   }
  case 1:
   {
    _arSetPatternDetectionMode($11, 2) | 0;
    break;
   }
  default:
   _arSetPatternDetectionMode($11, 3) | 0;
  }
  $21 = $3 + 248 | 0;
  $22 = $3 + 252 | 0;
  $23 = HEAP32[$22 >> 2] | 0;
  $28 = $23 - (HEAP32[$21 >> 2] | 0) >> 3;
  $29 = $marker;
  HEAP32[$29 >> 2] = 0;
  HEAP32[$29 + 4 >> 2] = 0;
  HEAP32[$marker >> 2] = $28;
  HEAP32[$marker + 4 >> 2] = HEAP32[$13 >> 2];
  if (($23 | 0) == (HEAP32[$3 + 256 >> 2] | 0)) {
   __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($21, $marker);
   $$0 = $28;
   break;
  } else {
   $38 = $marker;
   $40 = HEAP32[$38 >> 2] | 0;
   $43 = HEAP32[$38 + 4 >> 2] | 0;
   $44 = $23;
   HEAP32[$44 >> 2] = $40;
   HEAP32[$44 + 4 >> 2] = $43;
   HEAP32[$22 >> 2] = (HEAP32[$22 >> 2] | 0) + 8;
   $$0 = $40;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _get_cpara($world, $vertex, $para) {
 $world = $world | 0;
 $vertex = $vertex | 0;
 $para = $para | 0;
 var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $3 = 0, $4 = 0, $49 = 0, $5 = 0, $62 = 0, $68 = 0, $7 = 0, $76 = 0, $86 = 0, $9 = 0, $i$03 = 0;
 $0 = _arMatrixAlloc(8, 8) | 0;
 $1 = _arMatrixAlloc(8, 1) | 0;
 $2 = _arMatrixAlloc(8, 1) | 0;
 $3 = HEAP32[$0 >> 2] | 0;
 $4 = HEAP32[$1 >> 2] | 0;
 $i$03 = 0;
 do {
  $5 = $world + ($i$03 << 4) | 0;
  $7 = $i$03 << 4;
  HEAPF64[$3 + ($7 << 3) >> 3] = +HEAPF64[$5 >> 3];
  $9 = $world + ($i$03 << 4) + 8 | 0;
  HEAPF64[$3 + (($7 | 1) << 3) >> 3] = +HEAPF64[$9 >> 3];
  HEAPF64[$3 + (($7 | 2) << 3) >> 3] = 1.0;
  HEAPF64[$3 + (($7 | 3) << 3) >> 3] = 0.0;
  HEAPF64[$3 + (($7 | 4) << 3) >> 3] = 0.0;
  HEAPF64[$3 + (($7 | 5) << 3) >> 3] = 0.0;
  $22 = $vertex + ($i$03 << 4) | 0;
  HEAPF64[$3 + (($7 | 6) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$22 >> 3]);
  HEAPF64[$3 + (($7 | 7) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$22 >> 3]);
  HEAPF64[$3 + (($7 | 8) << 3) >> 3] = 0.0;
  HEAPF64[$3 + (($7 | 9) << 3) >> 3] = 0.0;
  HEAPF64[$3 + (($7 | 10) << 3) >> 3] = 0.0;
  HEAPF64[$3 + (($7 | 11) << 3) >> 3] = +HEAPF64[$5 >> 3];
  HEAPF64[$3 + (($7 | 12) << 3) >> 3] = +HEAPF64[$9 >> 3];
  HEAPF64[$3 + (($7 | 13) << 3) >> 3] = 1.0;
  $49 = $vertex + ($i$03 << 4) + 8 | 0;
  HEAPF64[$3 + (($7 | 14) << 3) >> 3] = -(+HEAPF64[$5 >> 3] * +HEAPF64[$49 >> 3]);
  HEAPF64[$3 + (($7 | 15) << 3) >> 3] = -(+HEAPF64[$9 >> 3] * +HEAPF64[$49 >> 3]);
  $62 = $i$03 << 1;
  HEAPF64[$4 + ($62 << 3) >> 3] = +HEAPF64[$22 >> 3];
  HEAPF64[$4 + (($62 | 1) << 3) >> 3] = +HEAPF64[$49 >> 3];
  $i$03 = $i$03 + 1 | 0;
 } while (($i$03 | 0) != 4);
 _arMatrixSelfInv($0) | 0;
 _arMatrixMul($2, $0, $1) | 0;
 $68 = HEAP32[$2 >> 2] | 0;
 HEAPF64[$para >> 3] = +HEAPF64[$68 >> 3];
 HEAPF64[$para + 8 >> 3] = +HEAPF64[$68 + 8 >> 3];
 HEAPF64[$para + 16 >> 3] = +HEAPF64[$68 + 16 >> 3];
 $76 = HEAP32[$2 >> 2] | 0;
 HEAPF64[$para + 24 >> 3] = +HEAPF64[$76 + 24 >> 3];
 HEAPF64[$para + 32 >> 3] = +HEAPF64[$76 + 32 >> 3];
 HEAPF64[$para + 40 >> 3] = +HEAPF64[$76 + 40 >> 3];
 $86 = HEAP32[$2 >> 2] | 0;
 HEAPF64[$para + 48 >> 3] = +HEAPF64[$86 + 48 >> 3];
 HEAPF64[$para + 56 >> 3] = +HEAPF64[$86 + 56 >> 3];
 HEAPF64[$para + 64 >> 3] = 1.0;
 _arMatrixFree($0) | 0;
 _arMatrixFree($1) | 0;
 _arMatrixFree($2) | 0;
 return;
}

function _arGetTransMatSquare($handle, $marker_info, $width, $conv) {
 $handle = $handle | 0;
 $marker_info = $marker_info | 0;
 $width = +$width;
 $conv = $conv | 0;
 var $$0 = 0.0, $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $53 = 0, $data = 0, $err = 0, $initMatXw2Xc = 0, $screenCoord = 0, $worldCoord = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 288 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $screenCoord = sp + 200 | 0;
 $worldCoord = sp + 104 | 0;
 $data = sp + 264 | 0;
 $initMatXw2Xc = sp + 8 | 0;
 $err = sp;
 $1 = HEAP32[$marker_info + 16 >> 2] | 0;
 $3 = (4 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3];
 HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3];
 $10 = (5 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3];
 HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3];
 $18 = (6 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3];
 HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3];
 $26 = (7 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3];
 HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3];
 $33 = $width * -.5;
 HEAPF64[$worldCoord >> 3] = $33;
 $34 = $width * .5;
 HEAPF64[$worldCoord + 8 >> 3] = $34;
 HEAPF64[$worldCoord + 16 >> 3] = 0.0;
 HEAPF64[$worldCoord + 24 >> 3] = $34;
 HEAPF64[$worldCoord + 32 >> 3] = $34;
 HEAPF64[$worldCoord + 40 >> 3] = 0.0;
 HEAPF64[$worldCoord + 48 >> 3] = $34;
 HEAPF64[$worldCoord + 56 >> 3] = $33;
 HEAPF64[$worldCoord + 64 >> 3] = 0.0;
 HEAPF64[$worldCoord + 72 >> 3] = $33;
 HEAPF64[$worldCoord + 80 >> 3] = $33;
 HEAPF64[$worldCoord + 88 >> 3] = 0.0;
 HEAP32[$data >> 2] = $screenCoord;
 HEAP32[$data + 4 >> 2] = $worldCoord;
 HEAP32[$data + 8 >> 2] = 4;
 if ((_icpGetInitXw2Xc_from_PlanarData(HEAP32[$handle >> 2] | 0, $screenCoord, $worldCoord, 4, $initMatXw2Xc) | 0) < 0) $$0 = 1.0e8; else {
  $53 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initMatXw2Xc, $conv, $err) | 0) < 0;
  $$0 = $53 ? 1.0e8 : +HEAPF64[$err >> 3];
 }
 STACKTOP = sp;
 return +$$0;
}

function __ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $14 = 0, $20 = 0, $23 = 0, $24 = 0, $26 = 0, $33 = 0, $44 = 0, $6 = 0, $is_dst_type_derived_from_static_type$0$off01 = 0, label = 0;
 L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {
  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {
   $6 = $info + 28 | 0;
   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;
  }
 } else {
  if (($this | 0) != (HEAP32[$info >> 2] | 0)) {
   $44 = HEAP32[$this + 8 >> 2] | 0;
   FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$44 >> 2] | 0) + 24 >> 2] & 3]($44, $info, $current_ptr, $path_below, $use_strcmp);
   break;
  }
  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {
   $14 = $info + 20 | 0;
   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {
    HEAP32[$info + 32 >> 2] = $path_below;
    $20 = $info + 44 | 0;
    if ((HEAP32[$20 >> 2] | 0) == 4) break;
    $23 = $info + 52 | 0;
    HEAP8[$23 >> 0] = 0;
    $24 = $info + 53 | 0;
    HEAP8[$24 >> 0] = 0;
    $26 = HEAP32[$this + 8 >> 2] | 0;
    FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$26 >> 2] | 0) + 20 >> 2] & 3]($26, $info, $current_ptr, $current_ptr, 1, $use_strcmp);
    if (!(HEAP8[$24 >> 0] | 0)) {
     $is_dst_type_derived_from_static_type$0$off01 = 0;
     label = 13;
    } else if (!(HEAP8[$23 >> 0] | 0)) {
     $is_dst_type_derived_from_static_type$0$off01 = 1;
     label = 13;
    }
    do if ((label | 0) == 13) {
     HEAP32[$14 >> 2] = $current_ptr;
     $33 = $info + 40 | 0;
     HEAP32[$33 >> 2] = (HEAP32[$33 >> 2] | 0) + 1;
     if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) {
      HEAP8[$info + 54 >> 0] = 1;
      if ($is_dst_type_derived_from_static_type$0$off01) break;
     } else label = 16; else label = 16;
     if ((label | 0) == 16) if ($is_dst_type_derived_from_static_type$0$off01) break;
     HEAP32[$20 >> 2] = 4;
     break L1;
    } while (0);
    HEAP32[$20 >> 2] = 3;
    break;
   }
  }
  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;
 } while (0);
 return;
}

function _fgets($s, $n, $f) {
 $s = $s | 0;
 $n = $n | 0;
 $f = $f | 0;
 var $$0 = 0, $$048 = 0, $$05 = 0, $$lcssa14 = 0, $$sum$pre$phiZZ2D = 0, $$sum6 = 0, $13 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $27 = 0, $28 = 0, $29 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $39 = 0, $4 = 0, $47 = 0, $48 = 0, $6 = 0, $8 = 0, $p$0 = 0, $p$1 = 0, label = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) $13 = ___lockfile($f) | 0; else $13 = 0;
 $4 = $n + -1 | 0;
 if (($n | 0) < 2) {
  $6 = $f + 74 | 0;
  $8 = HEAP8[$6 >> 0] | 0;
  HEAP8[$6 >> 0] = $8 + 255 | $8;
  if ($13) ___unlockfile($f);
  if (!$4) {
   HEAP8[$s >> 0] = 0;
   $$0 = $s;
  } else $$0 = 0;
 } else {
  L11 : do if (!$4) {
   $p$1 = $s;
   label = 18;
  } else {
   $15 = $f + 4 | 0;
   $16 = $f + 8 | 0;
   $$05 = $4;
   $p$0 = $s;
   while (1) {
    $17 = HEAP32[$15 >> 2] | 0;
    $20 = $17;
    $21 = (HEAP32[$16 >> 2] | 0) - $20 | 0;
    $22 = _memchr($17, 10, $21) | 0;
    $23 = ($22 | 0) == 0;
    $27 = $23 ? $21 : 1 - $20 + $22 | 0;
    $28 = $27 >>> 0 < $$05 >>> 0;
    $29 = $28 ? $27 : $$05;
    _memcpy($p$0 | 0, $17 | 0, $29 | 0) | 0;
    $30 = HEAP32[$15 >> 2] | 0;
    $31 = $30 + $29 | 0;
    HEAP32[$15 >> 2] = $31;
    $32 = $p$0 + $29 | 0;
    $33 = $$05 - $29 | 0;
    if (!($23 & $28)) {
     $p$1 = $32;
     label = 18;
     break L11;
    }
    if ($31 >>> 0 < (HEAP32[$16 >> 2] | 0) >>> 0) {
     $$sum6 = $29 + 1 | 0;
     HEAP32[$15 >> 2] = $30 + $$sum6;
     $$sum$pre$phiZZ2D = $$sum6;
     $47 = HEAPU8[$31 >> 0] | 0;
    } else {
     $39 = ___uflow($f) | 0;
     if (($39 | 0) < 0) {
      $$lcssa14 = $32;
      break;
     }
     $$sum$pre$phiZZ2D = $29 + 1 | 0;
     $47 = $39;
    }
    $$05 = $33 + -1 | 0;
    $48 = $p$0 + $$sum$pre$phiZZ2D | 0;
    HEAP8[$32 >> 0] = $47;
    if (!(($$05 | 0) != 0 & ($47 & 255 | 0) != 10)) {
     $p$1 = $48;
     label = 18;
     break L11;
    } else $p$0 = $48;
   }
   if (($$lcssa14 | 0) == ($s | 0)) $$048 = 0; else if (!(HEAP32[$f >> 2] & 16)) $$048 = 0; else {
    $p$1 = $$lcssa14;
    label = 18;
   }
  } while (0);
  if ((label | 0) == 18) if (!$s) $$048 = 0; else {
   HEAP8[$p$1 >> 0] = 0;
   $$048 = $s;
  }
  if (!$13) $$0 = $$048; else {
   ___unlockfile($f);
   $$0 = $$048;
  }
 }
 return $$0 | 0;
}

function _mbrtowc($wc, $src, $n, $st) {
 $wc = $wc | 0;
 $src = $src | 0;
 $n = $n | 0;
 $st = $st | 0;
 var $$0 = 0, $$024 = 0, $$1 = 0, $$lcssa = 0, $$lcssa35 = 0, $$st = 0, $1 = 0, $12 = 0, $16 = 0, $17 = 0, $19 = 0, $21 = 0, $30 = 0, $40 = 0, $7 = 0, $8 = 0, $c$05 = 0, $c$1 = 0, $c$2 = 0, $dummy = 0, $dummy$wc = 0, $s$06 = 0, $s$1 = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $dummy = sp;
 $$st = ($st | 0) == 0 ? 2680 : $st;
 $1 = HEAP32[$$st >> 2] | 0;
 L1 : do if (!$src) if (!$1) $$0 = 0; else label = 15; else {
  $dummy$wc = ($wc | 0) == 0 ? $dummy : $wc;
  if (!$n) $$0 = -2; else {
   if (!$1) {
    $7 = HEAP8[$src >> 0] | 0;
    $8 = $7 & 255;
    if ($7 << 24 >> 24 > -1) {
     HEAP32[$dummy$wc >> 2] = $8;
     $$0 = $7 << 24 >> 24 != 0 & 1;
     break;
    }
    $12 = $8 + -194 | 0;
    if ($12 >>> 0 > 50) {
     label = 15;
     break;
    }
    $16 = HEAP32[2432 + ($12 << 2) >> 2] | 0;
    $17 = $n + -1 | 0;
    if (!$17) $c$2 = $16; else {
     $$024 = $17;
     $c$05 = $16;
     $s$06 = $src + 1 | 0;
     label = 9;
    }
   } else {
    $$024 = $n;
    $c$05 = $1;
    $s$06 = $src;
    label = 9;
   }
   L11 : do if ((label | 0) == 9) {
    $19 = HEAP8[$s$06 >> 0] | 0;
    $21 = ($19 & 255) >>> 3;
    if (($21 + -16 | $21 + ($c$05 >> 26)) >>> 0 > 7) {
     label = 15;
     break L1;
    } else {
     $$1 = $$024;
     $30 = $19;
     $c$1 = $c$05;
     $s$1 = $s$06;
    }
    while (1) {
     $s$1 = $s$1 + 1 | 0;
     $c$1 = ($30 & 255) + -128 | $c$1 << 6;
     $$1 = $$1 + -1 | 0;
     if (($c$1 | 0) >= 0) {
      $$lcssa = $c$1;
      $$lcssa35 = $$1;
      break;
     }
     if (!$$1) {
      $c$2 = $c$1;
      break L11;
     }
     $30 = HEAP8[$s$1 >> 0] | 0;
     if (($30 & -64) << 24 >> 24 != -128) {
      label = 15;
      break L1;
     }
    }
    HEAP32[$$st >> 2] = 0;
    HEAP32[$dummy$wc >> 2] = $$lcssa;
    $$0 = $n - $$lcssa35 | 0;
    break L1;
   } while (0);
   HEAP32[$$st >> 2] = $c$2;
   $$0 = -2;
  }
 } while (0);
 if ((label | 0) == 15) {
  HEAP32[$$st >> 2] = 0;
  $40 = ___errno_location() | 0;
  HEAP32[$40 >> 2] = 84;
  $$0 = -1;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($agg$result, $this, $__p) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 $__p = $__p | 0;
 var $$pre$phiZ2D = 0, $0 = 0, $11 = 0, $12 = 0, $14 = 0, $16 = 0, $19 = 0, $2 = 0, $23 = 0, $24 = 0, $27 = 0, $31 = 0, $32 = 0, $34 = 0, $36 = 0, $4 = 0, $40 = 0, $43 = 0, $44 = 0, $5 = 0, $7 = 0, $__pn$0 = 0, $__pn$0$lcssa = 0, label = 0;
 $0 = HEAP32[$__p >> 2] | 0;
 $2 = HEAP32[$this + 4 >> 2] | 0;
 $4 = HEAP32[$0 + 4 >> 2] | 0;
 $5 = $2 + -1 | 0;
 $7 = ($5 & $2 | 0) == 0;
 if ($7) $12 = $5 & $4; else $12 = ($4 >>> 0) % ($2 >>> 0) | 0;
 $11 = (HEAP32[$this >> 2] | 0) + ($12 << 2) | 0;
 $__pn$0 = HEAP32[$11 >> 2] | 0;
 while (1) {
  $14 = HEAP32[$__pn$0 >> 2] | 0;
  if (($14 | 0) == ($0 | 0)) {
   $__pn$0$lcssa = $__pn$0;
   break;
  } else $__pn$0 = $14;
 }
 $16 = $this + 8 | 0;
 if (($__pn$0$lcssa | 0) == ($16 | 0)) label = 12; else {
  $19 = HEAP32[$__pn$0$lcssa + 4 >> 2] | 0;
  if ($7) $23 = $19 & $5; else $23 = ($19 >>> 0) % ($2 >>> 0) | 0;
  if (($23 | 0) == ($12 | 0)) $$pre$phiZ2D = $0; else label = 12;
 }
 do if ((label | 0) == 12) {
  $24 = HEAP32[$0 >> 2] | 0;
  if ($24) {
   $27 = HEAP32[$24 + 4 >> 2] | 0;
   if ($7) $31 = $27 & $5; else $31 = ($27 >>> 0) % ($2 >>> 0) | 0;
   if (($31 | 0) == ($12 | 0)) {
    $$pre$phiZ2D = $0;
    break;
   }
  }
  HEAP32[$11 >> 2] = 0;
  $$pre$phiZ2D = $0;
 } while (0);
 $32 = HEAP32[$$pre$phiZ2D >> 2] | 0;
 $34 = $32;
 if (!$32) $43 = $34; else {
  $36 = HEAP32[$32 + 4 >> 2] | 0;
  if ($7) $40 = $36 & $5; else $40 = ($36 >>> 0) % ($2 >>> 0) | 0;
  if (($40 | 0) == ($12 | 0)) $43 = $34; else {
   HEAP32[(HEAP32[$this >> 2] | 0) + ($40 << 2) >> 2] = $__pn$0$lcssa;
   $43 = HEAP32[$0 >> 2] | 0;
  }
 }
 HEAP32[$__pn$0$lcssa >> 2] = $43;
 HEAP32[$$pre$phiZ2D >> 2] = 0;
 $44 = $this + 12 | 0;
 HEAP32[$44 >> 2] = (HEAP32[$44 >> 2] | 0) + -1;
 HEAP32[$agg$result >> 2] = $0;
 HEAP32[$agg$result + 4 >> 2] = $16;
 HEAP8[$agg$result + 8 >> 0] = 1;
 return;
}

function _arParamLTCreate($param, $offset) {
 $param = $param | 0;
 $offset = $offset | 0;
 var $0 = 0, $14 = 0, $15 = 0, $17 = 0, $20 = 0, $22 = 0, $24 = 0, $26 = 0, $29 = 0.0, $3 = 0, $32 = 0.0, $4 = 0, $9 = 0, $i$04 = 0, $i2of$05 = 0, $i2of$12 = 0, $ix = 0, $iy = 0, $j$07 = 0, $o2if$06 = 0, $o2if$13 = 0, $ox = 0, $oy = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ix = sp + 24 | 0;
 $iy = sp + 16 | 0;
 $ox = sp + 8 | 0;
 $oy = sp;
 $0 = _malloc(208) | 0;
 if (!$0) {
  _arLog(3, 5471, sp + 32 | 0);
  _exit(1);
 }
 _memcpy($0 | 0, $param | 0, 184) | 0;
 $3 = $offset << 1;
 $4 = (HEAP32[$param >> 2] | 0) + $3 | 0;
 HEAP32[$0 + 192 >> 2] = $4;
 $9 = (HEAP32[$param + 4 >> 2] | 0) + $3 | 0;
 HEAP32[$0 + 196 >> 2] = $9;
 HEAP32[$0 + 200 >> 2] = $offset;
 HEAP32[$0 + 204 >> 2] = $offset;
 $14 = Math_imul($4 << 3, $9) | 0;
 $15 = _malloc($14) | 0;
 HEAP32[$0 + 184 >> 2] = $15;
 if (!$15) {
  _arLog(3, 5471, sp + 40 | 0);
  _exit(1);
 }
 $17 = _malloc($14) | 0;
 HEAP32[$0 + 188 >> 2] = $17;
 if (!$17) {
  _arLog(3, 5471, sp + 48 | 0);
  _exit(1);
 }
 $20 = $param + 104 | 0;
 $22 = HEAP32[$param + 176 >> 2] | 0;
 $24 = ($4 | 0) > 0 ? $4 << 1 : 0;
 if (($9 | 0) > 0) {
  $26 = ($4 | 0) > 0;
  $i2of$05 = $15;
  $j$07 = 0;
  $o2if$06 = $17;
  while (1) {
   $29 = +($j$07 - $offset | 0);
   if ($26) {
    $i$04 = 0;
    $i2of$12 = $i2of$05;
    $o2if$13 = $o2if$06;
    while (1) {
     $32 = +($i$04 - $offset | 0);
     _arParamIdeal2Observ($20, $32, $29, $ox, $oy, $22) | 0;
     HEAPF32[$i2of$12 >> 2] = +HEAPF64[$ox >> 3];
     HEAPF32[$i2of$12 + 4 >> 2] = +HEAPF64[$oy >> 3];
     _arParamObserv2Ideal($20, $32, $29, $ix, $iy, $22) | 0;
     HEAPF32[$o2if$13 >> 2] = +HEAPF64[$ix >> 3];
     HEAPF32[$o2if$13 + 4 >> 2] = +HEAPF64[$iy >> 3];
     $i$04 = $i$04 + 1 | 0;
     if (($i$04 | 0) >= ($4 | 0)) break; else {
      $i2of$12 = $i2of$12 + 8 | 0;
      $o2if$13 = $o2if$13 + 8 | 0;
     }
    }
   }
   $o2if$06 = $o2if$06 + ($24 << 2) | 0;
   $j$07 = $j$07 + 1 | 0;
   if (($j$07 | 0) >= ($9 | 0)) break; else $i2of$05 = $i2of$05 + ($24 << 2) | 0;
  }
 }
 STACKTOP = sp;
 return $0 | 0;
}

function _arGetTransMatSquareCont($handle, $marker_info, $initConv, $width, $conv) {
 $handle = $handle | 0;
 $marker_info = $marker_info | 0;
 $initConv = $initConv | 0;
 $width = +$width;
 $conv = $conv | 0;
 var $1 = 0, $10 = 0, $18 = 0, $26 = 0, $3 = 0, $33 = 0.0, $34 = 0.0, $50 = 0, $data = 0, $err = 0, $screenCoord = 0, $worldCoord = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 192 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $screenCoord = sp + 104 | 0;
 $worldCoord = sp + 8 | 0;
 $data = sp + 168 | 0;
 $err = sp;
 $1 = HEAP32[$marker_info + 16 >> 2] | 0;
 $3 = (4 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) >> 3];
 HEAPF64[$screenCoord + 8 >> 3] = +HEAPF64[$marker_info + 168 + ($3 << 4) + 8 >> 3];
 $10 = (5 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 16 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) >> 3];
 HEAPF64[$screenCoord + 24 >> 3] = +HEAPF64[$marker_info + 168 + ($10 << 4) + 8 >> 3];
 $18 = (6 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 32 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) >> 3];
 HEAPF64[$screenCoord + 40 >> 3] = +HEAPF64[$marker_info + 168 + ($18 << 4) + 8 >> 3];
 $26 = (7 - $1 | 0) % 4 | 0;
 HEAPF64[$screenCoord + 48 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) >> 3];
 HEAPF64[$screenCoord + 56 >> 3] = +HEAPF64[$marker_info + 168 + ($26 << 4) + 8 >> 3];
 $33 = $width * -.5;
 HEAPF64[$worldCoord >> 3] = $33;
 $34 = $width * .5;
 HEAPF64[$worldCoord + 8 >> 3] = $34;
 HEAPF64[$worldCoord + 16 >> 3] = 0.0;
 HEAPF64[$worldCoord + 24 >> 3] = $34;
 HEAPF64[$worldCoord + 32 >> 3] = $34;
 HEAPF64[$worldCoord + 40 >> 3] = 0.0;
 HEAPF64[$worldCoord + 48 >> 3] = $34;
 HEAPF64[$worldCoord + 56 >> 3] = $33;
 HEAPF64[$worldCoord + 64 >> 3] = 0.0;
 HEAPF64[$worldCoord + 72 >> 3] = $33;
 HEAPF64[$worldCoord + 80 >> 3] = $33;
 HEAPF64[$worldCoord + 88 >> 3] = 0.0;
 HEAP32[$data >> 2] = $screenCoord;
 HEAP32[$data + 4 >> 2] = $worldCoord;
 HEAP32[$data + 8 >> 2] = 4;
 $50 = (_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0;
 STACKTOP = sp;
 return +($50 ? 1.0e8 : +HEAPF64[$err >> 3]);
}

function ___dynamic_cast($static_ptr, $static_type, $dst_type, $src2dst_offset) {
 $static_ptr = $static_ptr | 0;
 $static_type = $static_type | 0;
 $dst_type = $dst_type | 0;
 $src2dst_offset = $src2dst_offset | 0;
 var $0 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $4 = 0, $6 = 0, $dst_ptr$0 = 0, $info = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $info = sp;
 $0 = HEAP32[$static_ptr >> 2] | 0;
 $4 = $static_ptr + (HEAP32[$0 + -8 >> 2] | 0) | 0;
 $6 = HEAP32[$0 + -4 >> 2] | 0;
 HEAP32[$info >> 2] = $dst_type;
 HEAP32[$info + 4 >> 2] = $static_ptr;
 HEAP32[$info + 8 >> 2] = $static_type;
 HEAP32[$info + 12 >> 2] = $src2dst_offset;
 $10 = $info + 16 | 0;
 $11 = $info + 20 | 0;
 $12 = $info + 24 | 0;
 $13 = $info + 28 | 0;
 $14 = $info + 32 | 0;
 $15 = $info + 40 | 0;
 $16 = ($6 | 0) == ($dst_type | 0);
 dest = $10;
 stop = dest + 36 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAP16[$10 + 36 >> 1] = 0;
 HEAP8[$10 + 38 >> 0] = 0;
 L1 : do if ($16) {
  HEAP32[$info + 48 >> 2] = 1;
  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$dst_type >> 2] | 0) + 20 >> 2] & 3]($dst_type, $info, $4, $4, 1, 0);
  $dst_ptr$0 = (HEAP32[$12 >> 2] | 0) == 1 ? $4 : 0;
 } else {
  FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$6 >> 2] | 0) + 24 >> 2] & 3]($6, $info, $4, 1, 0);
  switch (HEAP32[$info + 36 >> 2] | 0) {
  case 0:
   {
    $dst_ptr$0 = (HEAP32[$15 >> 2] | 0) == 1 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1 ? HEAP32[$11 >> 2] | 0 : 0;
    break L1;
    break;
   }
  case 1:
   break;
  default:
   {
    $dst_ptr$0 = 0;
    break L1;
   }
  }
  if ((HEAP32[$12 >> 2] | 0) != 1) if (!((HEAP32[$15 >> 2] | 0) == 0 & (HEAP32[$13 >> 2] | 0) == 1 & (HEAP32[$14 >> 2] | 0) == 1)) {
   $dst_ptr$0 = 0;
   break;
  }
  $dst_ptr$0 = HEAP32[$10 >> 2] | 0;
 } while (0);
 STACKTOP = sp;
 return $dst_ptr$0 | 0;
}

function _arImageProcLumaHistAndOtsu($ipi, $dataPtr, $value_p) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 $value_p = $value_p | 0;
 var $$0 = 0, $$lcssa = 0.0, $0 = 0, $12 = 0.0, $14 = 0, $18 = 0.0, $22 = 0.0, $27 = 0.0, $29 = 0.0, $6 = 0.0, $indvars$iv = 0, $indvars$iv1 = 0, $sum$0 = 0.0, $sumB$0 = 0.0, $sumB$1 = 0.0, $threshold$0 = 0, $threshold$1 = 0, $threshold$2 = 0, $varMax$0 = 0.0, $varMax$1 = 0.0, $wB$0 = 0.0;
 $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;
 if (($0 | 0) < 0) $$0 = $0; else {
  $indvars$iv1 = 1;
  $sum$0 = 0.0;
  while (1) {
   $6 = $sum$0 + +((Math_imul(HEAP32[$ipi + 16 + ($indvars$iv1 << 2) >> 2] | 0, $indvars$iv1) | 0) >>> 0);
   $indvars$iv1 = $indvars$iv1 + 1 | 0;
   if (($indvars$iv1 | 0) == 256) {
    $$lcssa = $6;
    break;
   } else $sum$0 = $6;
  }
  $12 = +(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0);
  $indvars$iv = 0;
  $sumB$0 = 0.0;
  $threshold$0 = 0;
  $varMax$0 = 0.0;
  $wB$0 = 0.0;
  while (1) {
   $14 = HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0;
   $wB$0 = $wB$0 + +($14 >>> 0);
   if ($wB$0 != 0.0) {
    $18 = $12 - $wB$0;
    if ($18 == 0.0) {
     $threshold$2 = $threshold$0;
     break;
    }
    $22 = $sumB$0 + +((Math_imul($indvars$iv, $14) | 0) >>> 0);
    $27 = $22 / $wB$0 - ($$lcssa - $22) / $18;
    $29 = $27 * ($wB$0 * $18 * $27);
    if ($29 > $varMax$0) {
     $sumB$1 = $22;
     $threshold$1 = $indvars$iv & 255;
     $varMax$1 = $29;
    } else {
     $sumB$1 = $22;
     $threshold$1 = $threshold$0;
     $varMax$1 = $varMax$0;
    }
   } else {
    $sumB$1 = $sumB$0;
    $threshold$1 = $threshold$0;
    $varMax$1 = $varMax$0;
   }
   if (($indvars$iv & 255) << 24 >> 24 == -1) {
    $threshold$2 = $threshold$1;
    break;
   } else {
    $indvars$iv = $indvars$iv + 1 | 0;
    $sumB$0 = $sumB$1;
    $threshold$0 = $threshold$1;
    $varMax$0 = $varMax$1;
   }
  }
  HEAP8[$value_p >> 0] = $threshold$2;
  $$0 = 0;
 }
 return $$0 | 0;
}

function __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev($this) {
 $this = $this | 0;
 __embind_register_void(624, 14202);
 __embind_register_bool(632, 14207, 1, 1, 0);
 __embind_register_integer(640, 13783, 1, -128, 127);
 __embind_register_integer(656, 13788, 1, -128, 127);
 __embind_register_integer(648, 13800, 1, 0, 255);
 __embind_register_integer(664, 13814, 2, -32768, 32767);
 __embind_register_integer(672, 13820, 2, 0, 65535);
 __embind_register_integer(680, 14212, 4, -2147483648, 2147483647);
 __embind_register_integer(688, 14216, 4, 0, -1);
 __embind_register_integer(696, 14229, 4, -2147483648, 2147483647);
 __embind_register_integer(704, 14234, 4, 0, -1);
 __embind_register_float(712, 14277, 4);
 __embind_register_float(720, 14283, 8);
 __embind_register_std_string(360, 12846);
 __embind_register_std_string(392, 10916);
 __embind_register_std_wstring(416, 4, 10949);
 __embind_register_emval(440, 10962);
 __embind_register_memory_view(448, 0, 10978);
 __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11008);
 __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11045);
 __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11084);
 __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11115);
 __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11155);
 __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11184);
 __embind_register_memory_view(456, 4, 11222);
 __embind_register_memory_view(464, 5, 11252);
 __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc(11291);
 __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc(11323);
 __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc(11356);
 __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc(11389);
 __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc(11423);
 __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc(11456);
 __embind_register_memory_view(472, 6, 11490);
 __embind_register_memory_view(480, 7, 11521);
 __embind_register_memory_view(488, 7, 11553);
 return;
}

function _arSetPixelFormat($handle, $pixFormat) {
 $handle = $handle | 0;
 $pixFormat = $pixFormat | 0;
 var $$0 = 0, $1 = 0, $14 = 0, $16 = 0, $17 = 0, $4 = 0, $6 = 0, $7 = 0, $monoFormat$0 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 L1 : do if (!$handle) $$0 = -1; else {
  $1 = $handle + 4 | 0;
  if ((HEAP32[$1 >> 2] | 0) == ($pixFormat | 0)) $$0 = 0; else {
   switch ($pixFormat | 0) {
   case 11:
   case 10:
   case 9:
   case 8:
   case 7:
   case 6:
   case 4:
   case 3:
   case 2:
   case 1:
   case 0:
    {
     $monoFormat$0 = 0;
     break;
    }
   case 14:
   case 13:
   case 12:
   case 5:
    {
     $monoFormat$0 = 1;
     break;
    }
   default:
    {
     HEAP32[$vararg_buffer >> 2] = $pixFormat;
     _arLog(3, 3936, $vararg_buffer);
     $$0 = -1;
     break L1;
    }
   }
   HEAP32[$1 >> 2] = $pixFormat;
   $4 = _arUtilGetPixelSize($pixFormat) | 0;
   HEAP32[$handle + 8 >> 2] = $4;
   $6 = $handle + 7062408 | 0;
   $7 = HEAP32[$6 >> 2] | 0;
   if ($7) {
    _arImageProcFinal($7);
    $14 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$1 >> 2] | 0, 0) | 0;
    HEAP32[$6 >> 2] = $14;
   }
   $16 = $handle + 24 | 0;
   $17 = HEAP32[$16 >> 2] | 0;
   if (!$monoFormat$0) switch ($17 | 0) {
   case 1:
    {
     HEAP32[$16 >> 2] = 4;
     $$0 = 0;
     break L1;
     break;
    }
   case 4:
    {
     HEAP32[$16 >> 2] = 3;
     $$0 = 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = 0;
     break L1;
    }
   } else switch ($17 | 0) {
   case 0:
    {
     HEAP32[$16 >> 2] = 1;
     $$0 = 0;
     break L1;
     break;
    }
   case 3:
    {
     HEAP32[$16 >> 2] = 4;
     $$0 = 0;
     break L1;
     break;
    }
   default:
    {
     $$0 = 0;
     break L1;
    }
   }
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _confidenceCutoff($arHandle) {
 $arHandle = $arHandle | 0;
 var $11 = 0, $21 = 0, $3 = 0, $31 = 0, $37 = 0, $6 = 0, $9 = 0, $cfOK$0 = 0, $i$010 = 0, $i$112 = 0, $i$29 = 0;
 switch (HEAP32[$arHandle + 24 >> 2] | 0) {
 case 1:
 case 0:
  {
   $6 = HEAP32[$arHandle + 44 >> 2] | 0;
   if (($6 | 0) > 0) {
    $i$010 = 0;
    do {
     $11 = $arHandle + 48 + ($i$010 << 8) + 4 | 0;
     if ((HEAP32[$11 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$010 << 8) + 32 >> 3] < .5) {
      HEAP32[$arHandle + 48 + ($i$010 << 8) + 8 >> 2] = -1;
      HEAP32[$11 >> 2] = -1;
      HEAP32[$arHandle + 48 + ($i$010 << 8) + 236 >> 2] = 6;
     }
     $i$010 = $i$010 + 1 | 0;
    } while (($i$010 | 0) < ($6 | 0));
   }
   break;
  }
 case 2:
  {
   $3 = HEAP32[$arHandle + 44 >> 2] | 0;
   if (($3 | 0) > 0) {
    $i$112 = 0;
    do {
     $21 = $arHandle + 48 + ($i$112 << 8) + 4 | 0;
     if ((HEAP32[$21 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$112 << 8) + 32 >> 3] < .5) {
      HEAP32[$arHandle + 48 + ($i$112 << 8) + 12 >> 2] = -1;
      HEAP32[$21 >> 2] = -1;
      HEAP32[$arHandle + 48 + ($i$112 << 8) + 236 >> 2] = 6;
     }
     $i$112 = $i$112 + 1 | 0;
    } while (($i$112 | 0) < ($3 | 0));
   }
   break;
  }
 default:
  {
   $9 = HEAP32[$arHandle + 44 >> 2] | 0;
   if (($9 | 0) > 0) {
    $i$29 = 0;
    do {
     $31 = $arHandle + 48 + ($i$29 << 8) + 8 | 0;
     if ((HEAP32[$31 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 40 >> 3] < .5) {
      HEAP32[$31 >> 2] = -1;
      $cfOK$0 = 0;
     } else $cfOK$0 = 1; else $cfOK$0 = 1;
     $37 = $arHandle + 48 + ($i$29 << 8) + 12 | 0;
     if ((HEAP32[$37 >> 2] | 0) > -1) if (+HEAPF64[$arHandle + 48 + ($i$29 << 8) + 48 >> 3] < .5) {
      HEAP32[$37 >> 2] = -1;
      if (!$cfOK$0) HEAP32[$arHandle + 48 + ($i$29 << 8) + 236 >> 2] = 6;
     }
     $i$29 = $i$29 + 1 | 0;
    } while (($i$29 | 0) < ($9 | 0));
   }
  }
 }
 return;
}

function ___stpcpy($d, $s) {
 $d = $d | 0;
 $s = $s | 0;
 var $$0$lcssa = 0, $$01$lcssa = 0, $$0115 = 0, $$016 = 0, $$03 = 0, $$1$ph = 0, $$12$ph = 0, $$128 = 0, $$19 = 0, $0 = 0, $10 = 0, $14 = 0, $20 = 0, $21 = 0, $22 = 0, $29 = 0, $32 = 0, $33 = 0, $7 = 0, $9 = 0, $wd$0$lcssa = 0, $wd$010 = 0, $ws$0$lcssa = 0, $ws$011 = 0, label = 0;
 $0 = $s;
 L1 : do if (!(($0 ^ $d) & 3)) {
  if (!($0 & 3)) {
   $$0$lcssa = $s;
   $$01$lcssa = $d;
  } else {
   $$0115 = $d;
   $$016 = $s;
   while (1) {
    $7 = HEAP8[$$016 >> 0] | 0;
    HEAP8[$$0115 >> 0] = $7;
    if (!($7 << 24 >> 24)) {
     $$03 = $$0115;
     break L1;
    }
    $9 = $$016 + 1 | 0;
    $10 = $$0115 + 1 | 0;
    if (!($9 & 3)) {
     $$0$lcssa = $9;
     $$01$lcssa = $10;
     break;
    } else {
     $$0115 = $10;
     $$016 = $9;
    }
   }
  }
  $14 = HEAP32[$$0$lcssa >> 2] | 0;
  if (!(($14 & -2139062144 ^ -2139062144) & $14 + -16843009)) {
   $22 = $14;
   $wd$010 = $$01$lcssa;
   $ws$011 = $$0$lcssa;
   while (1) {
    $20 = $ws$011 + 4 | 0;
    $21 = $wd$010 + 4 | 0;
    HEAP32[$wd$010 >> 2] = $22;
    $22 = HEAP32[$20 >> 2] | 0;
    if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) {
     $wd$0$lcssa = $21;
     $ws$0$lcssa = $20;
     break;
    } else {
     $wd$010 = $21;
     $ws$011 = $20;
    }
   }
  } else {
   $wd$0$lcssa = $$01$lcssa;
   $ws$0$lcssa = $$0$lcssa;
  }
  $$1$ph = $ws$0$lcssa;
  $$12$ph = $wd$0$lcssa;
  label = 8;
 } else {
  $$1$ph = $s;
  $$12$ph = $d;
  label = 8;
 } while (0);
 if ((label | 0) == 8) {
  $29 = HEAP8[$$1$ph >> 0] | 0;
  HEAP8[$$12$ph >> 0] = $29;
  if (!($29 << 24 >> 24)) $$03 = $$12$ph; else {
   $$128 = $$12$ph;
   $$19 = $$1$ph;
   while (1) {
    $$19 = $$19 + 1 | 0;
    $32 = $$128 + 1 | 0;
    $33 = HEAP8[$$19 >> 0] | 0;
    HEAP8[$32 >> 0] = $33;
    if (!($33 << 24 >> 24)) {
     $$03 = $32;
     break;
    } else $$128 = $32;
   }
  }
 }
 return $$03 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $10 = 0, $17 = 0, $21 = 0, $22 = 0, $3 = 0, $4 = 0, $t$0 = 0, $t$0$lcssa = 0, $t$0$looptemp = 0;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else switch (HEAP8[$first >> 0] | 0) {
 case 88:
  {
   $3 = $first + 1 | 0;
   $4 = __ZN10__cxxabiv112_GLOBAL__N_116parse_expressionINS0_2DbEEEPKcS4_S4_RT_($3, $last, $db) | 0;
   if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) {
    $$0 = $first;
    break L1;
   }
   $$0 = (HEAP8[$4 >> 0] | 0) == 69 ? $4 + 1 | 0 : $first;
   break L1;
   break;
  }
 case 74:
  {
   $10 = $first + 1 | 0;
   if (($10 | 0) == ($last | 0)) {
    $$0 = $first;
    break L1;
   } else $t$0 = $10;
   while (1) {
    if ((HEAP8[$t$0 >> 0] | 0) == 69) {
     $t$0$lcssa = $t$0;
     break;
    }
    $t$0$looptemp = $t$0;
    $t$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_template_argINS0_2DbEEEPKcS4_S4_RT_($t$0, $last, $db) | 0;
    if (($t$0 | 0) == ($t$0$looptemp | 0)) {
     $$0 = $first;
     break L1;
    }
   }
   $$0 = $t$0$lcssa + 1 | 0;
   break L1;
   break;
  }
 case 76:
  {
   $17 = $first + 1 | 0;
   if (($17 | 0) != ($last | 0)) if ((HEAP8[$17 >> 0] | 0) == 90) {
    $21 = $first + 2 | 0;
    $22 = __ZN10__cxxabiv112_GLOBAL__N_114parse_encodingINS0_2DbEEEPKcS4_S4_RT_($21, $last, $db) | 0;
    if (($22 | 0) == ($21 | 0) | ($22 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    return ((HEAP8[$22 >> 0] | 0) == 69 ? $22 + 1 | 0 : $first) | 0;
   }
   $$0 = __ZN10__cxxabiv112_GLOBAL__N_118parse_expr_primaryINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   break L1;
   break;
  }
 default:
  {
   $$0 = __ZN10__cxxabiv112_GLOBAL__N_110parse_typeINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
   break L1;
  }
 } while (0);
 return $$0 | 0;
}

function _vfprintf($f, $fmt, $ap) {
 $f = $f | 0;
 $fmt = $fmt | 0;
 $ap = $ap | 0;
 var $$ = 0, $$0 = 0, $12 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $21 = 0, $22 = 0, $28 = 0, $33 = 0, $6 = 0, $7 = 0, $ap2 = 0, $internal_buf = 0, $nl_arg = 0, $nl_type = 0, $ret$1 = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 224 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ap2 = sp + 80 | 0;
 $nl_type = sp + 96 | 0;
 $nl_arg = sp;
 $internal_buf = sp + 136 | 0;
 dest = $nl_type;
 stop = dest + 40 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2];
 if ((_printf_core(0, $fmt, $ap2, $nl_arg, $nl_type) | 0) < 0) $$0 = -1; else {
  if ((HEAP32[$f + 76 >> 2] | 0) > -1) $33 = ___lockfile($f) | 0; else $33 = 0;
  $6 = HEAP32[$f >> 2] | 0;
  $7 = $6 & 32;
  if ((HEAP8[$f + 74 >> 0] | 0) < 1) HEAP32[$f >> 2] = $6 & -33;
  $12 = $f + 48 | 0;
  if (!(HEAP32[$12 >> 2] | 0)) {
   $16 = $f + 44 | 0;
   $17 = HEAP32[$16 >> 2] | 0;
   HEAP32[$16 >> 2] = $internal_buf;
   $18 = $f + 28 | 0;
   HEAP32[$18 >> 2] = $internal_buf;
   $19 = $f + 20 | 0;
   HEAP32[$19 >> 2] = $internal_buf;
   HEAP32[$12 >> 2] = 80;
   $21 = $f + 16 | 0;
   HEAP32[$21 >> 2] = $internal_buf + 80;
   $22 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;
   if (!$17) $ret$1 = $22; else {
    FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;
    $$ = (HEAP32[$19 >> 2] | 0) == 0 ? -1 : $22;
    HEAP32[$16 >> 2] = $17;
    HEAP32[$12 >> 2] = 0;
    HEAP32[$21 >> 2] = 0;
    HEAP32[$18 >> 2] = 0;
    HEAP32[$19 >> 2] = 0;
    $ret$1 = $$;
   }
  } else $ret$1 = _printf_core($f, $fmt, $ap2, $nl_arg, $nl_type) | 0;
  $28 = HEAP32[$f >> 2] | 0;
  HEAP32[$f >> 2] = $28 | $7;
  if ($33) ___unlockfile($f);
  $$0 = ($28 & 32 | 0) == 0 ? $ret$1 : -1;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _get_vertex($x_coord, $y_coord, $st, $ed, $thresh, $vertex, $vnum) {
 $x_coord = $x_coord | 0;
 $y_coord = $y_coord | 0;
 $st = $st | 0;
 $ed = $ed | 0;
 $thresh = +$thresh;
 $vertex = $vertex | 0;
 $vnum = $vnum | 0;
 var $$0 = 0, $1 = 0, $11 = 0.0, $15 = 0.0, $16 = 0, $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $39 = 0, $5 = 0.0, $7 = 0, $9 = 0, $dmax$0$lcssa = 0.0, $dmax$01 = 0.0, $dmax$1 = 0.0, $i$02 = 0, $v1$0$lcssa = 0, $v1$03 = 0, $v1$1 = 0, label = 0;
 $1 = HEAP32[$y_coord + ($ed << 2) >> 2] | 0;
 $3 = HEAP32[$y_coord + ($st << 2) >> 2] | 0;
 $5 = +($1 - $3 | 0);
 $7 = HEAP32[$x_coord + ($st << 2) >> 2] | 0;
 $9 = HEAP32[$x_coord + ($ed << 2) >> 2] | 0;
 $11 = +($7 - $9 | 0);
 $15 = +((Math_imul($9, $3) | 0) - (Math_imul($7, $1) | 0) | 0);
 $16 = $st + 1 | 0;
 if (($16 | 0) < ($ed | 0)) {
  $dmax$01 = 0.0;
  $i$02 = $16;
  $v1$03 = $16;
  while (1) {
   $27 = $15 + ($5 * +(HEAP32[$x_coord + ($i$02 << 2) >> 2] | 0) + $11 * +(HEAP32[$y_coord + ($i$02 << 2) >> 2] | 0));
   $28 = $27 * $27;
   $29 = $28 > $dmax$01;
   $dmax$1 = $29 ? $28 : $dmax$01;
   $v1$1 = $29 ? $i$02 : $v1$03;
   $i$02 = $i$02 + 1 | 0;
   if (($i$02 | 0) >= ($ed | 0)) {
    $dmax$0$lcssa = $dmax$1;
    $v1$0$lcssa = $v1$1;
    break;
   } else {
    $dmax$01 = $dmax$1;
    $v1$03 = $v1$1;
   }
  }
 } else {
  $dmax$0$lcssa = 0.0;
  $v1$0$lcssa = $16;
 }
 if ($dmax$0$lcssa / ($5 * $5 + $11 * $11) > $thresh) if ((_get_vertex($x_coord, $y_coord, $st, $v1$0$lcssa, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else {
  $39 = HEAP32[$vnum >> 2] | 0;
  if (($39 | 0) > 5) $$0 = -1; else {
   HEAP32[$vertex + ($39 << 2) >> 2] = $v1$0$lcssa;
   HEAP32[$vnum >> 2] = (HEAP32[$vnum >> 2] | 0) + 1;
   if ((_get_vertex($x_coord, $y_coord, $v1$0$lcssa, $ed, $thresh, $vertex, $vnum) | 0) < 0) $$0 = -1; else label = 7;
  }
 } else label = 7;
 if ((label | 0) == 7) $$0 = 0;
 return $$0 | 0;
}

function _setMarkerInfoVertex($id, $markerIndex) {
 $id = $id | 0;
 $markerIndex = $markerIndex | 0;
 var $$0 = 0, $0 = 0, $13 = 0.0, $15 = 0.0, $17 = 0.0, $19 = 0.0, $21 = 0.0, $23 = 0.0, $25 = 0.0, $27 = 0.0, $5 = 0, $6 = 0, $_ZL11gMarkerInfo$ = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $6 = HEAP32[$5 >> 2] | 0;
  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {
   $_ZL11gMarkerInfo$ = ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0;
   $13 = +HEAPF64[33];
   HEAPF64[$_ZL11gMarkerInfo$ + 168 >> 3] = $13;
   $15 = +HEAPF64[34];
   HEAPF64[$_ZL11gMarkerInfo$ + 176 >> 3] = $15;
   $17 = +HEAPF64[35];
   HEAPF64[$_ZL11gMarkerInfo$ + 184 >> 3] = $17;
   $19 = +HEAPF64[36];
   HEAPF64[$_ZL11gMarkerInfo$ + 192 >> 3] = $19;
   $21 = +HEAPF64[37];
   HEAPF64[$_ZL11gMarkerInfo$ + 200 >> 3] = $21;
   $23 = +HEAPF64[38];
   HEAPF64[$_ZL11gMarkerInfo$ + 208 >> 3] = $23;
   $25 = +HEAPF64[39];
   HEAPF64[$_ZL11gMarkerInfo$ + 216 >> 3] = $25;
   $27 = +HEAPF64[40];
   HEAPF64[$_ZL11gMarkerInfo$ + 224 >> 3] = $27;
   HEAPF64[$_ZL11gMarkerInfo$ + 56 >> 3] = ($13 + $17 + $21 + $25) * .25;
   HEAPF64[$_ZL11gMarkerInfo$ + 64 >> 3] = ($15 + $19 + $23 + $27) * .25;
   $$0 = 0;
   break;
  } else {
   $$0 = HEAP32[523] | 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function ___stdio_read($f, $buf, $len) {
 $f = $f | 0;
 $buf = $buf | 0;
 $len = $len | 0;
 var $$0 = 0, $0 = 0, $1 = 0, $15 = 0, $2 = 0, $27 = 0, $30 = 0, $31 = 0, $32 = 0, $7 = 0, $cnt$0 = 0, $iov = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer = sp;
 $iov = sp + 32 | 0;
 HEAP32[$iov >> 2] = $buf;
 $0 = $iov + 4 | 0;
 $1 = $f + 48 | 0;
 $2 = HEAP32[$1 >> 2] | 0;
 HEAP32[$0 >> 2] = $len - (($2 | 0) != 0 & 1);
 $7 = $f + 44 | 0;
 HEAP32[$iov + 8 >> 2] = HEAP32[$7 >> 2];
 HEAP32[$iov + 12 >> 2] = $2;
 if (!(HEAP32[597] | 0)) {
  HEAP32[$vararg_buffer3 >> 2] = HEAP32[$f + 60 >> 2];
  HEAP32[$vararg_buffer3 + 4 >> 2] = $iov;
  HEAP32[$vararg_buffer3 + 8 >> 2] = 2;
  $cnt$0 = ___syscall_ret(___syscall145(145, $vararg_buffer3 | 0) | 0) | 0;
 } else {
  _pthread_cleanup_push(13, $f | 0);
  HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];
  HEAP32[$vararg_buffer + 4 >> 2] = $iov;
  HEAP32[$vararg_buffer + 8 >> 2] = 2;
  $15 = ___syscall_ret(___syscall145(145, $vararg_buffer | 0) | 0) | 0;
  _pthread_cleanup_pop(0);
  $cnt$0 = $15;
 }
 if (($cnt$0 | 0) < 1) {
  HEAP32[$f >> 2] = HEAP32[$f >> 2] | $cnt$0 & 48 ^ 16;
  HEAP32[$f + 8 >> 2] = 0;
  HEAP32[$f + 4 >> 2] = 0;
  $$0 = $cnt$0;
 } else {
  $27 = HEAP32[$0 >> 2] | 0;
  if ($cnt$0 >>> 0 > $27 >>> 0) {
   $30 = HEAP32[$7 >> 2] | 0;
   $31 = $f + 4 | 0;
   HEAP32[$31 >> 2] = $30;
   $32 = $30;
   HEAP32[$f + 8 >> 2] = $32 + ($cnt$0 - $27);
   if (!(HEAP32[$1 >> 2] | 0)) $$0 = $len; else {
    HEAP32[$31 >> 2] = $32 + 1;
    HEAP8[$buf + ($len + -1) >> 0] = HEAP8[$32 >> 0] | 0;
    $$0 = $len;
   }
  } else $$0 = $cnt$0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $dst_ptr = $dst_ptr | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $10 = 0, $13 = 0, $14 = 0, $15 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $9 = 0, $p$0 = 0;
 if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else {
  $3 = $info + 52 | 0;
  $4 = HEAP8[$3 >> 0] | 0;
  $5 = $info + 53 | 0;
  $6 = HEAP8[$5 >> 0] | 0;
  $9 = HEAP32[$this + 12 >> 2] | 0;
  $10 = $this + 16 + ($9 << 3) | 0;
  HEAP8[$3 >> 0] = 0;
  HEAP8[$5 >> 0] = 0;
  __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this + 16 | 0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
  L4 : do if (($9 | 0) > 1) {
   $13 = $info + 24 | 0;
   $14 = $this + 8 | 0;
   $15 = $info + 54 | 0;
   $p$0 = $this + 24 | 0;
   do {
    if (HEAP8[$15 >> 0] | 0) break L4;
    if (!(HEAP8[$3 >> 0] | 0)) {
     if (HEAP8[$5 >> 0] | 0) if (!(HEAP32[$14 >> 2] & 1)) break L4;
    } else {
     if ((HEAP32[$13 >> 2] | 0) == 1) break L4;
     if (!(HEAP32[$14 >> 2] & 2)) break L4;
    }
    HEAP8[$3 >> 0] = 0;
    HEAP8[$5 >> 0] = 0;
    __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($p$0, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
    $p$0 = $p$0 + 8 | 0;
   } while ($p$0 >>> 0 < $10 >>> 0);
  } while (0);
  HEAP8[$3 >> 0] = $4;
  HEAP8[$5 >> 0] = $6;
 }
 return;
}

function _teardown($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $13 = 0, $16 = 0, $3 = 0, $4 = 0, $5 = 0, $i$02 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $4 = $3 + 196 | 0;
  $5 = HEAP32[$4 >> 2] | 0;
  if ($5) {
   _free($5);
   HEAP32[$4 >> 2] = 0;
   HEAP32[$3 + 200 >> 2] = 0;
  }
  _deleteHandle($3);
  _arPattDeleteHandle(HEAP32[$3 + 216 >> 2] | 0) | 0;
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_(2044, $0) | 0;
  $10 = $3 + 248 | 0;
  $11 = $3 + 252 | 0;
  $13 = HEAP32[$10 >> 2] | 0;
  if ((HEAP32[$11 >> 2] | 0) != ($13 | 0)) {
   $16 = $13;
   $i$02 = 0;
   do {
    _arMultiFreeConfig(HEAP32[$16 + ($i$02 << 3) + 4 >> 2] | 0) | 0;
    $i$02 = $i$02 + 1 | 0;
    $16 = HEAP32[$10 >> 2] | 0;
   } while ($i$02 >>> 0 < (HEAP32[$11 >> 2] | 0) - $16 >> 3 >>> 0);
  }
  __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($10);
  __ZdlPv($10);
  __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($3 + 248 | 0);
  __ZdlPv($3);
  $$0 = 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_115parse_simple_idINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) {
 $first = $first | 0;
 $last = $last | 0;
 $db = $db | 0;
 var $$0 = 0, $1 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $20 = 0, $22 = 0, $3 = 0, $5 = 0, $6 = 0, $args = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $args = sp;
 if (($first | 0) == ($last | 0)) $$0 = $first; else {
  $1 = __ZN10__cxxabiv112_GLOBAL__N_117parse_source_nameINS0_2DbEEEPKcS4_S4_RT_($first, $last, $db) | 0;
  if (($1 | 0) == ($first | 0)) $$0 = $first; else {
   $3 = __ZN10__cxxabiv112_GLOBAL__N_119parse_template_argsINS0_2DbEEEPKcS4_S4_RT_($1, $last, $db) | 0;
   if (($3 | 0) == ($1 | 0)) $$0 = $1; else {
    $5 = $db + 4 | 0;
    $6 = HEAP32[$5 >> 2] | 0;
    if ((($6 - (HEAP32[$db >> 2] | 0) | 0) / 24 | 0) >>> 0 < 2) $$0 = $first; else {
     __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($args, $6 + -24 | 0);
     $14 = HEAP32[$5 >> 2] | 0;
     $15 = $14 + -24 | 0;
     $17 = $14;
     do {
      $16 = $17 + -24 | 0;
      HEAP32[$5 >> 2] = $16;
      __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($16);
      $17 = HEAP32[$5 >> 2] | 0;
     } while (($17 | 0) != ($15 | 0));
     $20 = HEAP8[$args >> 0] | 0;
     $22 = ($20 & 1) == 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($14 + -48 | 0, $22 ? $args + 1 | 0 : HEAP32[$args + 8 >> 2] | 0, $22 ? ($20 & 255) >>> 1 : HEAP32[$args + 4 >> 2] | 0) | 0;
     __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($args);
     $$0 = $3;
    }
   }
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arMatrixMul($dest, $a, $b) {
 $dest = $dest | 0;
 $a = $a | 0;
 $b = $b | 0;
 var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $19 = 0, $20 = 0, $29 = 0.0, $6 = 0, $c$04 = 0, $i$01 = 0, $p1$02 = 0, $p2$03 = 0, $p3$09 = 0, $p3$15 = 0, $r$08 = 0, $smax = 0;
 $1 = HEAP32[$a + 8 >> 2] | 0;
 if (($1 | 0) == (HEAP32[$b + 4 >> 2] | 0)) {
  $6 = HEAP32[$dest + 4 >> 2] | 0;
  if (($6 | 0) == (HEAP32[$a + 4 >> 2] | 0)) {
   $11 = HEAP32[$dest + 8 >> 2] | 0;
   if (($11 | 0) == (HEAP32[$b + 8 >> 2] | 0)) {
    $smax = ($11 | 0) > 0 ? $11 : 0;
    if (($6 | 0) > 0) {
     $18 = ($11 | 0) > 0;
     $19 = ($1 | 0) > 0;
     $p3$09 = HEAP32[$dest >> 2] | 0;
     $r$08 = 0;
     while (1) {
      $20 = Math_imul($1, $r$08) | 0;
      if ($18) {
       $c$04 = 0;
       $p3$15 = $p3$09;
       while (1) {
        HEAPF64[$p3$15 >> 3] = 0.0;
        if ($19) {
         $29 = 0.0;
         $i$01 = 0;
         $p1$02 = (HEAP32[$a >> 2] | 0) + ($20 << 3) | 0;
         $p2$03 = (HEAP32[$b >> 2] | 0) + ($c$04 << 3) | 0;
         while (1) {
          $29 = $29 + +HEAPF64[$p1$02 >> 3] * +HEAPF64[$p2$03 >> 3];
          HEAPF64[$p3$15 >> 3] = $29;
          $i$01 = $i$01 + 1 | 0;
          if (($i$01 | 0) >= ($1 | 0)) break; else {
           $p1$02 = $p1$02 + 8 | 0;
           $p2$03 = $p2$03 + ($11 << 3) | 0;
          }
         }
        }
        $c$04 = $c$04 + 1 | 0;
        if (($c$04 | 0) >= ($11 | 0)) break; else $p3$15 = $p3$15 + 8 | 0;
       }
      }
      $r$08 = $r$08 + 1 | 0;
      if (($r$08 | 0) >= ($6 | 0)) {
       $$0 = 0;
       break;
      } else $p3$09 = $p3$09 + ($smax << 3) | 0;
     }
    } else $$0 = 0;
   } else $$0 = -1;
  } else $$0 = -1;
 } else $$0 = -1;
 return $$0 | 0;
}

function __ZNSt3__16vectorINS0_INS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEEENS4_IS8_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS8_RS9_EE($this, $__v) {
 $this = $this | 0;
 $__v = $__v | 0;
 var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0;
 $0 = HEAP32[$this >> 2] | 0;
 $1 = $this + 4 | 0;
 $2 = HEAP32[$1 >> 2] | 0;
 $3 = $__v + 4 | 0;
 if (($2 | 0) != ($0 | 0)) {
  $$0$i1 = $2;
  do {
   $5 = HEAP32[$3 >> 2] | 0;
   $6 = $5 + -16 | 0;
   $$0$i1$looptemp = $$0$i1;
   $$0$i1 = $$0$i1 + -16 | 0;
   HEAP32[$6 >> 2] = 0;
   $9 = $5 + -12 | 0;
   HEAP32[$9 >> 2] = 0;
   $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0;
   HEAP32[$5 + -8 >> 2] = 0;
   HEAP32[$5 + -4 >> 2] = $11;
   HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2];
   $14 = $$0$i1$looptemp + -12 | 0;
   HEAP32[$9 >> 2] = HEAP32[$14 >> 2];
   $16 = $$0$i1$looptemp + -8 | 0;
   HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2];
   HEAP32[$16 >> 2] = 0;
   HEAP32[$14 >> 2] = 0;
   HEAP32[$$0$i1 >> 2] = 0;
   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16;
  } while (($$0$i1 | 0) != ($0 | 0));
 }
 $22 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = HEAP32[$3 >> 2];
 HEAP32[$3 >> 2] = $22;
 $24 = $__v + 8 | 0;
 $25 = HEAP32[$1 >> 2] | 0;
 HEAP32[$1 >> 2] = HEAP32[$24 >> 2];
 HEAP32[$24 >> 2] = $25;
 $27 = $this + 8 | 0;
 $28 = $__v + 12 | 0;
 $29 = HEAP32[$27 >> 2] | 0;
 HEAP32[$27 >> 2] = HEAP32[$28 >> 2];
 HEAP32[$28 >> 2] = $29;
 HEAP32[$__v >> 2] = HEAP32[$3 >> 2];
 return;
}

function _strspn($s, $c) {
 $s = $s | 0;
 $c = $c | 0;
 var $$0 = 0, $$028 = 0, $$03 = 0, $$03$lcssa = 0, $$1$lcssa = 0, $$16 = 0, $0 = 0, $11 = 0, $14 = 0, $18 = 0, $24 = 0, $33 = 0, $byteset = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $byteset = sp;
 HEAP32[$byteset >> 2] = 0;
 HEAP32[$byteset + 4 >> 2] = 0;
 HEAP32[$byteset + 8 >> 2] = 0;
 HEAP32[$byteset + 12 >> 2] = 0;
 HEAP32[$byteset + 16 >> 2] = 0;
 HEAP32[$byteset + 20 >> 2] = 0;
 HEAP32[$byteset + 24 >> 2] = 0;
 HEAP32[$byteset + 28 >> 2] = 0;
 $0 = HEAP8[$c >> 0] | 0;
 do if (!($0 << 24 >> 24)) $$0 = 0; else {
  if (!(HEAP8[$c + 1 >> 0] | 0)) {
   $$03 = $s;
   while (1) if ((HEAP8[$$03 >> 0] | 0) == $0 << 24 >> 24) $$03 = $$03 + 1 | 0; else {
    $$03$lcssa = $$03;
    break;
   }
   $$0 = $$03$lcssa - $s | 0;
   break;
  } else {
   $$028 = $c;
   $14 = $0;
  }
  do {
   $18 = $byteset + ((($14 & 255) >>> 5 & 255) << 2) | 0;
   HEAP32[$18 >> 2] = HEAP32[$18 >> 2] | 1 << ($14 & 31);
   $$028 = $$028 + 1 | 0;
   $14 = HEAP8[$$028 >> 0] | 0;
  } while ($14 << 24 >> 24 != 0);
  $11 = HEAP8[$s >> 0] | 0;
  L10 : do if (!($11 << 24 >> 24)) $$1$lcssa = $s; else {
   $$16 = $s;
   $24 = $11;
   while (1) {
    if (!(HEAP32[$byteset + ((($24 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($24 & 31))) {
     $$1$lcssa = $$16;
     break L10;
    }
    $33 = $$16 + 1 | 0;
    $24 = HEAP8[$33 >> 0] | 0;
    if (!($24 << 24 >> 24)) {
     $$1$lcssa = $33;
     break;
    } else $$16 = $33;
   }
  } while (0);
  $$0 = $$1$lcssa - $s | 0;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arLog($logLevel, $format, $varargs) {
 $logLevel = $logLevel | 0;
 $format = $format | 0;
 $varargs = $varargs | 0;
 var $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $5 = 0, $7 = 0, $ap = 0, $buf = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $buf = sp + 16 | 0;
 $ap = sp;
 HEAP32[$buf >> 2] = 0;
 if (($format | 0) != 0 & (HEAP32[496] | 0) <= ($logLevel | 0)) if (HEAP8[$format >> 0] | 0) {
  HEAP32[$ap >> 2] = $varargs;
  $5 = _vasprintf($buf, $format, $ap) | 0;
  if (($5 | 0) > -1) {
   $7 = HEAP32[497] | 0;
   do if (!$7) _fputs(HEAP32[$buf >> 2] | 0, HEAP32[659] | 0) | 0; else {
    if (!(HEAP32[498] | 0)) {
     FUNCTION_TABLE_vi[$7 & 15](HEAP32[$buf >> 2] | 0);
     break;
    }
    $12 = _pthread_self() | 0;
    $15 = HEAP32[500] | 0;
    if (($12 | 0) == (HEAP32[499] | 0)) {
     if (($15 | 0) > 0) {
      FUNCTION_TABLE_vi[$7 & 15](HEAP32[502] | 0);
      HEAP32[500] = 0;
      $29 = HEAP32[497] | 0;
     } else $29 = $7;
     FUNCTION_TABLE_vi[$29 & 15](HEAP32[$buf >> 2] | 0);
     break;
    }
    $16 = HEAP32[501] | 0;
    if (($15 | 0) < ($16 | 0)) {
     $21 = (HEAP32[502] | 0) + $15 | 0;
     if (($5 | 0) < (-3 - $15 + $16 | 0)) {
      _strcpy($21, HEAP32[$buf >> 2] | 0) | 0;
      HEAP32[500] = (HEAP32[500] | 0) + $5;
      break;
     } else {
      HEAP8[$21 >> 0] = 46;
      HEAP8[$21 + 1 >> 0] = 46;
      HEAP8[$21 + 2 >> 0] = 46;
      HEAP8[$21 + 3 >> 0] = 0;
      HEAP32[500] = HEAP32[501];
      break;
     }
    }
   } while (0);
   _free(HEAP32[$buf >> 2] | 0);
  }
 }
 STACKTOP = sp;
 return;
}

function __ZNSt3__16vectorINS0_IN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEENS4_IS6_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS6_RS7_EE($this, $__v) {
 $this = $this | 0;
 $__v = $__v | 0;
 var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $14 = 0, $16 = 0, $2 = 0, $22 = 0, $24 = 0, $25 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0, $$0$i1$looptemp = 0;
 $0 = HEAP32[$this >> 2] | 0;
 $1 = $this + 4 | 0;
 $2 = HEAP32[$1 >> 2] | 0;
 $3 = $__v + 4 | 0;
 if (($2 | 0) != ($0 | 0)) {
  $$0$i1 = $2;
  do {
   $5 = HEAP32[$3 >> 2] | 0;
   $6 = $5 + -16 | 0;
   $$0$i1$looptemp = $$0$i1;
   $$0$i1 = $$0$i1 + -16 | 0;
   HEAP32[$6 >> 2] = 0;
   $9 = $5 + -12 | 0;
   HEAP32[$9 >> 2] = 0;
   $11 = HEAP32[$$0$i1$looptemp + -4 >> 2] | 0;
   HEAP32[$5 + -8 >> 2] = 0;
   HEAP32[$5 + -4 >> 2] = $11;
   HEAP32[$6 >> 2] = HEAP32[$$0$i1 >> 2];
   $14 = $$0$i1$looptemp + -12 | 0;
   HEAP32[$9 >> 2] = HEAP32[$14 >> 2];
   $16 = $$0$i1$looptemp + -8 | 0;
   HEAP32[$5 + -8 >> 2] = HEAP32[$16 >> 2];
   HEAP32[$16 >> 2] = 0;
   HEAP32[$14 >> 2] = 0;
   HEAP32[$$0$i1 >> 2] = 0;
   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -16;
  } while (($$0$i1 | 0) != ($0 | 0));
 }
 $22 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = HEAP32[$3 >> 2];
 HEAP32[$3 >> 2] = $22;
 $24 = $__v + 8 | 0;
 $25 = HEAP32[$1 >> 2] | 0;
 HEAP32[$1 >> 2] = HEAP32[$24 >> 2];
 HEAP32[$24 >> 2] = $25;
 $27 = $this + 8 | 0;
 $28 = $__v + 12 | 0;
 $29 = HEAP32[$27 >> 2] | 0;
 HEAP32[$27 >> 2] = HEAP32[$28 >> 2];
 HEAP32[$28 >> 2] = $29;
 HEAP32[$__v >> 2] = HEAP32[$3 >> 2];
 return;
}

function _getMultiEachMarkerInfo($id, $multiMarkerId, $markerIndex) {
 $id = $id | 0;
 $multiMarkerId = $multiMarkerId | 0;
 $markerIndex = $markerIndex | 0;
 var $$0 = 0, $0 = 0, $17 = 0, $23 = 0, $4 = 0, $8 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $8 = HEAP32[$4 + 248 >> 2] | 0;
  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {
   $$0 = HEAP32[524] | 0;
   break;
  }
  $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;
  if (($markerIndex | 0) < 0 ? 1 : (HEAP32[$17 + 4 >> 2] | 0) <= ($markerIndex | 0)) {
   $$0 = HEAP32[523] | 0;
   break;
  } else {
   $23 = HEAP32[$17 >> 2] | 0;
   _matrixCopy($23 + ($markerIndex * 320 | 0) + 16 | 0, 264);
   _emscripten_asm_const_4(0, HEAP32[$23 + ($markerIndex * 320 | 0) + 304 >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) >> 2] | 0, HEAP32[$23 + ($markerIndex * 320 | 0) + 4 >> 2] | 0, +(+HEAPF64[$23 + ($markerIndex * 320 | 0) + 8 >> 3])) | 0;
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendIPKcEENS_9enable_ifIXsr21__is_forward_iteratorIT_EE5valueERS7_E4typeESC_SC_($this, $__first, $__last) {
 $this = $this | 0;
 $__first = $__first | 0;
 $__last = $__last | 0;
 var $$03 = 0, $0 = 0, $1 = 0, $12 = 0, $15 = 0, $16 = 0, $21 = 0, $29 = 0, $34 = 0, $41 = 0, $8 = 0, $__p$04 = 0, $scevgep1 = 0;
 $0 = $__first;
 $1 = HEAP8[$this >> 0] | 0;
 if (!($1 & 1)) {
  $15 = 10;
  $16 = ($1 & 255) >>> 1;
  $41 = $1;
 } else {
  $8 = HEAP32[$this >> 2] | 0;
  $15 = ($8 & -2) + -1 | 0;
  $16 = HEAP32[$this + 4 >> 2] | 0;
  $41 = $8 & 255;
 }
 $12 = $__last - $0 | 0;
 do if (($__last | 0) != ($__first | 0)) {
  if (($15 - $16 | 0) >>> 0 < $12 >>> 0) {
   __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $15, $16 + $12 - $15 | 0, $16, $16, 0);
   $21 = HEAP8[$this >> 0] | 0;
  } else $21 = $41;
  if (!($21 & 1)) $29 = $this + 1 | 0; else $29 = HEAP32[$this + 8 >> 2] | 0;
  $scevgep1 = $__last + ($16 - $0) | 0;
  if (($__first | 0) != ($__last | 0)) {
   $$03 = $__first;
   $__p$04 = $29 + $16 | 0;
   while (1) {
    HEAP8[$__p$04 >> 0] = HEAP8[$$03 >> 0] | 0;
    $$03 = $$03 + 1 | 0;
    if (($$03 | 0) == ($__last | 0)) break; else $__p$04 = $__p$04 + 1 | 0;
   }
  }
  HEAP8[$29 + $scevgep1 >> 0] = 0;
  $34 = $16 + $12 | 0;
  if (!(HEAP8[$this >> 0] & 1)) {
   HEAP8[$this >> 0] = $34 << 1;
   break;
  } else {
   HEAP32[$this + 4 >> 2] = $34;
   break;
  }
 } while (0);
 return;
}

function _fread($destv, $size, $nmemb, $f) {
 $destv = $destv | 0;
 $size = $size | 0;
 $nmemb = $nmemb | 0;
 $f = $f | 0;
 var $$ = 0, $$0 = 0, $0 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $28 = 0, $32 = 0, $5 = 0, $7 = 0, $dest$0$ph = 0, $dest$02 = 0, $l$0$ph = 0, $l$03 = 0, $l$03$lcssa = 0, label = 0;
 $0 = Math_imul($nmemb, $size) | 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) $32 = ___lockfile($f) | 0; else $32 = 0;
 $5 = $f + 74 | 0;
 $7 = HEAP8[$5 >> 0] | 0;
 HEAP8[$5 >> 0] = $7 + 255 | $7;
 $13 = $f + 4 | 0;
 $14 = HEAP32[$13 >> 2] | 0;
 $17 = (HEAP32[$f + 8 >> 2] | 0) - $14 | 0;
 if (($17 | 0) > 0) {
  $$ = $17 >>> 0 < $0 >>> 0 ? $17 : $0;
  _memcpy($destv | 0, $14 | 0, $$ | 0) | 0;
  HEAP32[$13 >> 2] = $14 + $$;
  $dest$0$ph = $destv + $$ | 0;
  $l$0$ph = $0 - $$ | 0;
 } else {
  $dest$0$ph = $destv;
  $l$0$ph = $0;
 }
 L7 : do if (!$l$0$ph) label = 13; else {
  $24 = $f + 32 | 0;
  $dest$02 = $dest$0$ph;
  $l$03 = $l$0$ph;
  while (1) {
   if (___toread($f) | 0) {
    $l$03$lcssa = $l$03;
    break;
   }
   $28 = FUNCTION_TABLE_iiii[HEAP32[$24 >> 2] & 15]($f, $dest$02, $l$03) | 0;
   if (($28 + 1 | 0) >>> 0 < 2) {
    $l$03$lcssa = $l$03;
    break;
   }
   if (($l$03 | 0) == ($28 | 0)) {
    label = 13;
    break L7;
   } else {
    $dest$02 = $dest$02 + $28 | 0;
    $l$03 = $l$03 - $28 | 0;
   }
  }
  if ($32) ___unlockfile($f);
  $$0 = (($0 - $l$03$lcssa | 0) >>> 0) / ($size >>> 0) | 0;
 } while (0);
 if ((label | 0) == 13) if (!$32) $$0 = $nmemb; else {
  ___unlockfile($f);
  $$0 = $nmemb;
 }
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, $__n) {
 $this = $this | 0;
 $__pos = $__pos | 0;
 $__s = $__s | 0;
 $__n = $__n | 0;
 var $$1 = 0, $$pre$phiZ2D = 0, $0 = 0, $13 = 0, $17 = 0, $2 = 0, $23 = 0, $25 = 0, $31 = 0, $8 = 0, $9 = 0;
 $0 = HEAP8[$this >> 0] | 0;
 $2 = ($0 & 1) == 0;
 if ($2) $8 = ($0 & 255) >>> 1; else $8 = HEAP32[$this + 4 >> 2] | 0;
 if ($8 >>> 0 < $__pos >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this);
 if ($2) {
  $13 = 10;
  $17 = $0;
 } else {
  $9 = HEAP32[$this >> 2] | 0;
  $13 = ($9 & -2) + -1 | 0;
  $17 = $9 & 255;
 }
 if (($13 - $8 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $13, $8 + $__n - $13 | 0, $8, $__pos, 0, $__n, $__s); else if ($__n) {
  if (!($17 & 1)) $23 = $this + 1 | 0; else $23 = HEAP32[$this + 8 >> 2] | 0;
  if (($8 | 0) == ($__pos | 0)) {
   $$1 = $__s;
   $$pre$phiZ2D = $23 + $__pos | 0;
  } else {
   $25 = $23 + $__pos | 0;
   _memmove($23 + ($__n + $__pos) | 0, $25 | 0, $8 - $__pos | 0) | 0;
   $$1 = $25 >>> 0 <= $__s >>> 0 & ($23 + $8 | 0) >>> 0 > $__s >>> 0 ? $__s + $__n | 0 : $__s;
   $$pre$phiZ2D = $25;
  }
  _memmove($$pre$phiZ2D | 0, $$1 | 0, $__n | 0) | 0;
  $31 = $8 + $__n | 0;
  if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $31 << 1; else HEAP32[$this + 4 >> 2] = $31;
  HEAP8[$23 + $31 >> 0] = 0;
 }
 return $this | 0;
}

function _arUtilMatInv($s, $d) {
 $s = $s | 0;
 $d = $d | 0;
 var $0 = 0, $1 = 0, $2 = 0, $22 = 0, $23 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $4 = 0, $5 = 0, $j$08 = 0, $j$16 = 0;
 $0 = _arMatrixAlloc(4, 4) | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = HEAP32[$0 >> 2] | 0;
 $3 = HEAP32[$0 >> 2] | 0;
 $4 = HEAP32[$0 >> 2] | 0;
 $j$08 = 0;
 do {
  $5 = $j$08 << 2;
  HEAPF64[$1 + ($5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) >> 3];
  HEAPF64[$2 + (1 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 8 >> 3];
  HEAPF64[$3 + (2 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 16 >> 3];
  HEAPF64[$4 + (3 + $5 << 3) >> 3] = +HEAPF64[$s + ($j$08 << 5) + 24 >> 3];
  $j$08 = $j$08 + 1 | 0;
 } while (($j$08 | 0) != 3);
 $22 = HEAP32[$0 >> 2] | 0;
 $23 = $22 + 96 | 0;
 HEAP32[$23 >> 2] = 0;
 HEAP32[$23 + 4 >> 2] = 0;
 HEAP32[$23 + 8 >> 2] = 0;
 HEAP32[$23 + 12 >> 2] = 0;
 HEAP32[$23 + 16 >> 2] = 0;
 HEAP32[$23 + 20 >> 2] = 0;
 HEAPF64[$22 + 120 >> 3] = 1.0;
 _arMatrixSelfInv($0) | 0;
 $25 = HEAP32[$0 >> 2] | 0;
 $26 = HEAP32[$0 >> 2] | 0;
 $27 = HEAP32[$0 >> 2] | 0;
 $28 = HEAP32[$0 >> 2] | 0;
 $j$16 = 0;
 do {
  $29 = $j$16 << 2;
  HEAPF64[$d + ($j$16 << 5) >> 3] = +HEAPF64[$25 + ($29 << 3) >> 3];
  HEAPF64[$d + ($j$16 << 5) + 8 >> 3] = +HEAPF64[$26 + (1 + $29 << 3) >> 3];
  HEAPF64[$d + ($j$16 << 5) + 16 >> 3] = +HEAPF64[$27 + (2 + $29 << 3) >> 3];
  HEAPF64[$d + ($j$16 << 5) + 24 >> 3] = +HEAPF64[$28 + (3 + $29 << 3) >> 3];
  $j$16 = $j$16 + 1 | 0;
 } while (($j$16 | 0) != 3);
 _arMatrixFree($0) | 0;
 return 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_discriminatorEPKcS2_($first, $last) {
 $first = $first | 0;
 $last = $last | 0;
 var $$0 = 0, $$lcssa = 0, $1 = 0, $11 = 0, $3 = 0, $5 = 0, $9 = 0, $first$pn = 0, $t1$016 = 0, $t1$016$lcssa = 0, $t11$0 = 0;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {
  $1 = HEAP8[$first >> 0] | 0;
  if ($1 << 24 >> 24 != 95) {
   if ((($1 << 24 >> 24) + -48 | 0) >>> 0 < 10) $first$pn = $first; else {
    $$0 = $first;
    break;
   }
   while (1) {
    $t11$0 = $first$pn + 1 | 0;
    if (($t11$0 | 0) == ($last | 0)) {
     $$0 = $last;
     break L1;
    }
    if (((HEAP8[$t11$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $first$pn = $t11$0; else {
     $$0 = $t11$0;
     break L1;
    }
   }
  }
  $3 = $first + 1 | 0;
  if (($3 | 0) == ($last | 0)) $$0 = $first; else {
   $5 = HEAP8[$3 >> 0] | 0;
   if ((($5 << 24 >> 24) + -48 | 0) >>> 0 < 10) {
    $$0 = $first + 2 | 0;
    break;
   }
   if ($5 << 24 >> 24 == 95) {
    $9 = $first + 2 | 0;
    if (($9 | 0) == ($last | 0)) $$0 = $first; else {
     $t1$016 = $9;
     while (1) {
      $11 = HEAP8[$t1$016 >> 0] | 0;
      if ((($11 << 24 >> 24) + -48 | 0) >>> 0 >= 10) {
       $$lcssa = $11;
       $t1$016$lcssa = $t1$016;
       break;
      }
      $t1$016 = $t1$016 + 1 | 0;
      if (($t1$016 | 0) == ($last | 0)) {
       $$0 = $first;
       break L1;
      }
     }
     return ($$lcssa << 24 >> 24 == 95 ? $t1$016$lcssa + 1 | 0 : $first) | 0;
    }
   } else $$0 = $first;
  }
 } while (0);
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_del, $__n_add, $__p_new_stuff) {
 $this = $this | 0;
 $__old_cap = $__old_cap | 0;
 $__delta_cap = $__delta_cap | 0;
 $__old_sz = $__old_sz | 0;
 $__n_copy = $__n_copy | 0;
 $__n_del = $__n_del | 0;
 $__n_add = $__n_add | 0;
 $__p_new_stuff = $__p_new_stuff | 0;
 var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $23 = 0, $31 = 0, $9 = 0;
 if ((-18 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);
 if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0;
 if ($__old_cap >>> 0 < 2147483623) {
  $9 = $__delta_cap + $__old_cap | 0;
  $10 = $__old_cap << 1;
  $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9;
  $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16;
 } else $17 = -17;
 $18 = _malloc($17) | 0;
 if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0;
 if ($__n_add) _memcpy($18 + $__n_copy | 0, $__p_new_stuff | 0, $__n_add | 0) | 0;
 $23 = $__old_sz - $__n_del | 0;
 if (($23 | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + ($__n_del + $__n_copy) | 0, $23 - $__n_copy | 0) | 0;
 if (($__old_cap | 0) != 10) _free($20);
 HEAP32[$this + 8 >> 2] = $18;
 HEAP32[$this >> 2] = $17 | 1;
 $31 = $23 + $__n_add | 0;
 HEAP32[$this + 4 >> 2] = $31;
 HEAP8[$18 + $31 >> 0] = 0;
 return;
}

function _strcspn($s, $c) {
 $s = $s | 0;
 $c = $c | 0;
 var $$0 = 0, $$027 = 0, $$03$lcssa = 0, $$035 = 0, $0 = 0, $10 = 0, $13 = 0, $17 = 0, $23 = 0, $32 = 0, $byteset = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $byteset = sp;
 $0 = HEAP8[$c >> 0] | 0;
 if (!($0 << 24 >> 24)) label = 3; else if (!(HEAP8[$c + 1 >> 0] | 0)) label = 3; else {
  HEAP32[$byteset >> 2] = 0;
  HEAP32[$byteset + 4 >> 2] = 0;
  HEAP32[$byteset + 8 >> 2] = 0;
  HEAP32[$byteset + 12 >> 2] = 0;
  HEAP32[$byteset + 16 >> 2] = 0;
  HEAP32[$byteset + 20 >> 2] = 0;
  HEAP32[$byteset + 24 >> 2] = 0;
  HEAP32[$byteset + 28 >> 2] = 0;
  $$027 = $c;
  $13 = $0;
  do {
   $17 = $byteset + ((($13 & 255) >>> 5 & 255) << 2) | 0;
   HEAP32[$17 >> 2] = HEAP32[$17 >> 2] | 1 << ($13 & 31);
   $$027 = $$027 + 1 | 0;
   $13 = HEAP8[$$027 >> 0] | 0;
  } while ($13 << 24 >> 24 != 0);
  $10 = HEAP8[$s >> 0] | 0;
  L7 : do if (!($10 << 24 >> 24)) $$03$lcssa = $s; else {
   $$035 = $s;
   $23 = $10;
   while (1) {
    if (HEAP32[$byteset + ((($23 & 255) >>> 5 & 255) << 2) >> 2] & 1 << ($23 & 31)) {
     $$03$lcssa = $$035;
     break L7;
    }
    $32 = $$035 + 1 | 0;
    $23 = HEAP8[$32 >> 0] | 0;
    if (!($23 << 24 >> 24)) {
     $$03$lcssa = $32;
     break;
    } else $$035 = $32;
   }
  } while (0);
  $$0 = $$03$lcssa - $s | 0;
 }
 if ((label | 0) == 3) $$0 = (___strchrnul($s, $0 << 24 >> 24) | 0) - $s | 0;
 STACKTOP = sp;
 return $$0 | 0;
}

function ___strchrnul($s, $c) {
 $s = $s | 0;
 $c = $c | 0;
 var $$0 = 0, $$02$lcssa = 0, $$0211 = 0, $$1 = 0, $0 = 0, $11 = 0, $15 = 0, $16 = 0, $22 = 0, $23 = 0, $29 = 0, $36 = 0, $37 = 0, $5 = 0, $8 = 0, $w$0$lcssa = 0, $w$08 = 0;
 $0 = $c & 255;
 L1 : do if (!$0) $$0 = $s + (_strlen($s) | 0) | 0; else {
  if (!($s & 3)) $$02$lcssa = $s; else {
   $5 = $c & 255;
   $$0211 = $s;
   while (1) {
    $8 = HEAP8[$$0211 >> 0] | 0;
    if ($8 << 24 >> 24 == 0 ? 1 : $8 << 24 >> 24 == $5 << 24 >> 24) {
     $$0 = $$0211;
     break L1;
    }
    $11 = $$0211 + 1 | 0;
    if (!($11 & 3)) {
     $$02$lcssa = $11;
     break;
    } else $$0211 = $11;
   }
  }
  $15 = Math_imul($0, 16843009) | 0;
  $16 = HEAP32[$$02$lcssa >> 2] | 0;
  L10 : do if (!(($16 & -2139062144 ^ -2139062144) & $16 + -16843009)) {
   $23 = $16;
   $w$08 = $$02$lcssa;
   while (1) {
    $22 = $23 ^ $15;
    if (($22 & -2139062144 ^ -2139062144) & $22 + -16843009) {
     $w$0$lcssa = $w$08;
     break L10;
    }
    $29 = $w$08 + 4 | 0;
    $23 = HEAP32[$29 >> 2] | 0;
    if (($23 & -2139062144 ^ -2139062144) & $23 + -16843009) {
     $w$0$lcssa = $29;
     break;
    } else $w$08 = $29;
   }
  } else $w$0$lcssa = $$02$lcssa; while (0);
  $36 = $c & 255;
  $$1 = $w$0$lcssa;
  while (1) {
   $37 = HEAP8[$$1 >> 0] | 0;
   if ($37 << 24 >> 24 == 0 ? 1 : $37 << 24 >> 24 == $36 << 24 >> 24) {
    $$0 = $$1;
    break;
   } else $$1 = $$1 + 1 | 0;
  }
 } while (0);
 return $$0 | 0;
}

function _arGetTransMatRobust($handle, $initConv, $pos2d, $pos3d, $num, $conv) {
 $handle = $handle | 0;
 $initConv = $initConv | 0;
 $pos2d = $pos2d | 0;
 $pos3d = $pos3d | 0;
 $num = $num | 0;
 $conv = $conv | 0;
 var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $data = sp + 20 | 0;
 $err = sp;
 $1 = _malloc($num << 4) | 0;
 HEAP32[$data >> 2] = $1;
 if (!$1) {
  _arLog(3, 5471, sp + 8 | 0);
  _exit(1);
 }
 $4 = _malloc($num * 24 | 0) | 0;
 $5 = $data + 4 | 0;
 HEAP32[$5 >> 2] = $4;
 if (!$4) {
  _arLog(3, 5471, sp + 16 | 0);
  _exit(1);
 }
 if (($num | 0) > 0) {
  $i$01 = 0;
  do {
   HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3];
   HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3];
   $i$01 = $i$01 + 1 | 0;
  } while (($i$01 | 0) < ($num | 0));
 }
 HEAP32[$data + 8 >> 2] = $num;
 if ((_icpPointRobust(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8;
 _free(HEAP32[$data >> 2] | 0);
 _free(HEAP32[$5 >> 2] | 0);
 STACKTOP = sp;
 return +(+HEAPF64[$err >> 3]);
}

function _arGetTransMat($handle, $initConv, $pos2d, $pos3d, $num, $conv) {
 $handle = $handle | 0;
 $initConv = $initConv | 0;
 $pos2d = $pos2d | 0;
 $pos3d = $pos3d | 0;
 $num = $num | 0;
 $conv = $conv | 0;
 var $1 = 0, $4 = 0, $5 = 0, $data = 0, $err = 0, $i$01 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $data = sp + 20 | 0;
 $err = sp;
 $1 = _malloc($num << 4) | 0;
 HEAP32[$data >> 2] = $1;
 if (!$1) {
  _arLog(3, 5471, sp + 8 | 0);
  _exit(1);
 }
 $4 = _malloc($num * 24 | 0) | 0;
 $5 = $data + 4 | 0;
 HEAP32[$5 >> 2] = $4;
 if (!$4) {
  _arLog(3, 5471, sp + 16 | 0);
  _exit(1);
 }
 if (($num | 0) > 0) {
  $i$01 = 0;
  do {
   HEAPF64[$1 + ($i$01 << 4) >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) >> 3];
   HEAPF64[$1 + ($i$01 << 4) + 8 >> 3] = +HEAPF64[$pos2d + ($i$01 << 4) + 8 >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) + 8 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 8 >> 3];
   HEAPF64[$4 + ($i$01 * 24 | 0) + 16 >> 3] = +HEAPF64[$pos3d + ($i$01 * 24 | 0) + 16 >> 3];
   $i$01 = $i$01 + 1 | 0;
  } while (($i$01 | 0) < ($num | 0));
 }
 HEAP32[$data + 8 >> 2] = $num;
 if ((_icpPoint(HEAP32[$handle >> 2] | 0, $data, $initConv, $conv, $err) | 0) < 0) HEAPF64[$err >> 3] = 1.0e8;
 _free(HEAP32[$data >> 2] | 0);
 _free(HEAP32[$5 >> 2] | 0);
 STACKTOP = sp;
 return +(+HEAPF64[$err >> 3]);
}

function ___fwritex($s, $l, $f) {
 $s = $s | 0;
 $l = $l | 0;
 $f = $f | 0;
 var $$0 = 0, $$01 = 0, $$02 = 0, $0 = 0, $1 = 0, $19 = 0, $29 = 0, $5 = 0, $6 = 0, $8 = 0, $i$0 = 0, $i$0$lcssa10 = 0, $i$1 = 0, label = 0;
 $0 = $f + 16 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 if (!$1) if (!(___towrite($f) | 0)) {
  $8 = HEAP32[$0 >> 2] | 0;
  label = 4;
 } else $$0 = 0; else {
  $8 = $1;
  label = 4;
 }
 L4 : do if ((label | 0) == 4) {
  $5 = $f + 20 | 0;
  $6 = HEAP32[$5 >> 2] | 0;
  if (($8 - $6 | 0) >>> 0 < $l >>> 0) {
   $$0 = FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $l) | 0;
   break;
  }
  L9 : do if ((HEAP8[$f + 75 >> 0] | 0) > -1) {
   $i$0 = $l;
   while (1) {
    if (!$i$0) {
     $$01 = $l;
     $$02 = $s;
     $29 = $6;
     $i$1 = 0;
     break L9;
    }
    $19 = $i$0 + -1 | 0;
    if ((HEAP8[$s + $19 >> 0] | 0) == 10) {
     $i$0$lcssa10 = $i$0;
     break;
    } else $i$0 = $19;
   }
   if ((FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, $s, $i$0$lcssa10) | 0) >>> 0 < $i$0$lcssa10 >>> 0) {
    $$0 = $i$0$lcssa10;
    break L4;
   }
   $$01 = $l - $i$0$lcssa10 | 0;
   $$02 = $s + $i$0$lcssa10 | 0;
   $29 = HEAP32[$5 >> 2] | 0;
   $i$1 = $i$0$lcssa10;
  } else {
   $$01 = $l;
   $$02 = $s;
   $29 = $6;
   $i$1 = 0;
  } while (0);
  _memcpy($29 | 0, $$02 | 0, $$01 | 0) | 0;
  HEAP32[$5 >> 2] = (HEAP32[$5 >> 2] | 0) + $$01;
  $$0 = $i$1 + $$01 | 0;
 } while (0);
 return $$0 | 0;
}

function ___shgetc($f) {
 $f = $f | 0;
 var $$0 = 0, $$phi$trans$insert = 0, $$pre = 0, $$pre4 = 0, $0 = 0, $1 = 0, $12 = 0, $14 = 0, $15 = 0, $21 = 0, $26 = 0, $28 = 0, $31 = 0, $36 = 0, $41 = 0, $6 = 0, $9 = 0, label = 0;
 $0 = $f + 104 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 if (!$1) label = 3; else if ((HEAP32[$f + 108 >> 2] | 0) < ($1 | 0)) label = 3; else label = 4;
 if ((label | 0) == 3) {
  $6 = ___uflow($f) | 0;
  if (($6 | 0) < 0) label = 4; else {
   $9 = HEAP32[$0 >> 2] | 0;
   $$phi$trans$insert = $f + 8 | 0;
   if (!$9) {
    $$pre = HEAP32[$$phi$trans$insert >> 2] | 0;
    $26 = $$pre;
    $41 = $$pre;
    label = 9;
   } else {
    $12 = HEAP32[$$phi$trans$insert >> 2] | 0;
    $14 = HEAP32[$f + 4 >> 2] | 0;
    $15 = $12;
    $21 = $9 - (HEAP32[$f + 108 >> 2] | 0) + -1 | 0;
    if (($15 - $14 | 0) > ($21 | 0)) {
     HEAP32[$f + 100 >> 2] = $14 + $21;
     $28 = $12;
    } else {
     $26 = $15;
     $41 = $12;
     label = 9;
    }
   }
   if ((label | 0) == 9) {
    HEAP32[$f + 100 >> 2] = $26;
    $28 = $41;
   }
   $$pre4 = HEAP32[$f + 4 >> 2] | 0;
   if ($28) {
    $31 = $f + 108 | 0;
    HEAP32[$31 >> 2] = $28 + 1 - $$pre4 + (HEAP32[$31 >> 2] | 0);
   }
   $36 = $$pre4 + -1 | 0;
   if ((HEAPU8[$36 >> 0] | 0 | 0) == ($6 | 0)) $$0 = $6; else {
    HEAP8[$36 >> 0] = $6;
    $$0 = $6;
   }
  }
 }
 if ((label | 0) == 4) {
  HEAP32[$f + 100 >> 2] = 0;
  $$0 = -1;
 }
 return $$0 | 0;
}

function _arSetLabelingThreshMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0, $1 = 0, $13 = 0, $4 = 0, $5 = 0, $mode1$0 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 if (!$handle) $$0 = -1; else {
  $1 = $handle + 7062388 | 0;
  if ((HEAP32[$1 >> 2] | 0) == ($mode | 0)) $$0 = 0; else {
   $4 = $handle + 7062408 | 0;
   $5 = HEAP32[$4 >> 2] | 0;
   if ($5) {
    _arImageProcFinal($5);
    HEAP32[$4 >> 2] = 0;
   }
   switch ($mode | 0) {
   case 3:
   case 2:
   case 1:
    {
     $13 = _arImageProcInit(HEAP32[$handle + 36 >> 2] | 0, HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 4 >> 2] | 0, 0) | 0;
     HEAP32[$4 >> 2] = $13;
     $mode1$0 = $mode;
     break;
    }
   case 4:
    {
     HEAP32[$handle + 7062404 >> 2] = 1;
     HEAP32[$handle + 7062400 >> 2] = 1;
     $mode1$0 = 4;
     break;
    }
   case 0:
    {
     $mode1$0 = 0;
     break;
    }
   default:
    {
     _arLog(3, 3985, $vararg_buffer);
     $mode1$0 = 0;
    }
   }
   HEAP32[$1 >> 2] = $mode1$0;
   if ((HEAP32[$handle >> 2] | 0) == 1) {
    HEAP32[$vararg_buffer1 >> 2] = HEAP32[760 + ($mode1$0 << 2) >> 2];
    _arLog(3, 4059, $vararg_buffer1);
    $$0 = 0;
   } else $$0 = 0;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _sift($head, $width, $cmp, $pshift, $lp) {
 $head = $head | 0;
 $width = $width | 0;
 $cmp = $cmp | 0;
 $pshift = $pshift | 0;
 $lp = $lp | 0;
 var $$0$be = 0, $$01$be = 0, $$012 = 0, $$03 = 0, $1 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $6 = 0, $7 = 0, $ar = 0, $i$0$lcssa = 0, $i$04 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 240 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ar = sp;
 HEAP32[$ar >> 2] = $head;
 L1 : do if (($pshift | 0) > 1) {
  $1 = 0 - $width | 0;
  $$012 = $pshift;
  $$03 = $head;
  $7 = $head;
  $i$04 = 1;
  while (1) {
   $2 = $$03 + $1 | 0;
   $3 = $$012 + -2 | 0;
   $6 = $$03 + (0 - ((HEAP32[$lp + ($3 << 2) >> 2] | 0) + $width)) | 0;
   if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $6) | 0) > -1) if ((FUNCTION_TABLE_iii[$cmp & 15]($7, $2) | 0) > -1) {
    $i$0$lcssa = $i$04;
    break L1;
   }
   $14 = $i$04 + 1 | 0;
   $15 = $ar + ($i$04 << 2) | 0;
   if ((FUNCTION_TABLE_iii[$cmp & 15]($6, $2) | 0) > -1) {
    HEAP32[$15 >> 2] = $6;
    $$0$be = $6;
    $$01$be = $$012 + -1 | 0;
   } else {
    HEAP32[$15 >> 2] = $2;
    $$0$be = $2;
    $$01$be = $3;
   }
   if (($$01$be | 0) <= 1) {
    $i$0$lcssa = $14;
    break L1;
   }
   $$012 = $$01$be;
   $$03 = $$0$be;
   $7 = HEAP32[$ar >> 2] | 0;
   $i$04 = $14;
  }
 } else $i$0$lcssa = 1; while (0);
 _cycle($width, $ar, $i$0$lcssa);
 STACKTOP = sp;
 return;
}

function _arCreateHandle($paramLT) {
 $paramLT = $paramLT | 0;
 var $0 = 0, $15 = 0, $18 = 0, $26 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = _malloc(7062432) | 0;
 if (!$0) {
  _arLog(3, 5471, sp);
  _exit(1);
 }
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4834148 >> 2] = 0;
 HEAP32[$0 + 7062408 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = -1;
 HEAP32[$0 + 8 >> 2] = 0;
 HEAP32[$0 + 12 >> 2] = 1;
 HEAP32[$0 + 16 >> 2] = 100;
 HEAP32[$0 + 20 >> 2] = 0;
 HEAP32[$0 + 24 >> 2] = 0;
 HEAP32[$0 + 28 >> 2] = 2;
 HEAPF64[$0 + 7062416 >> 3] = .5;
 HEAP32[$0 + 7062424 >> 2] = 3;
 HEAP32[$0 + 32 >> 2] = $paramLT;
 $15 = HEAP32[$paramLT >> 2] | 0;
 HEAP32[$0 + 36 >> 2] = $15;
 $18 = HEAP32[$paramLT + 4 >> 2] | 0;
 HEAP32[$0 + 40 >> 2] = $18;
 HEAP32[$0 + 44 >> 2] = 0;
 HEAP32[$0 + 15408 >> 2] = 0;
 HEAP32[$0 + 4834152 >> 2] = 0;
 HEAP32[$0 + 4818296 >> 2] = 0;
 $26 = _malloc(Math_imul($15 << 1, $18) | 0) | 0;
 HEAP32[$0 + 4834144 >> 2] = $26;
 if (!$26) {
  _arLog(3, 5471, sp + 8 | 0);
  _exit(1);
 } else {
  HEAP32[$0 + 7062384 >> 2] = 0;
  _arSetPixelFormat($0, 2) | 0;
  _arSetDebugMode($0, 0) | 0;
  HEAP32[$0 + 7062388 >> 2] = -1;
  _arSetLabelingThreshMode($0, 0) | 0;
  HEAP32[$0 + 7062392 >> 2] = 7;
  HEAP32[$0 + 7062396 >> 2] = 0;
  STACKTOP = sp;
  return $0 | 0;
 }
 return 0;
}

function __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE21__push_back_slow_pathIRKS1_EEvOT_($this, $__x) {
 $this = $this | 0;
 $__x = $__x | 0;
 var $$0$i = 0, $1 = 0, $13 = 0, $14 = 0, $17 = 0, $24 = 0, $25 = 0, $26 = 0, $3 = 0, $31 = 0, $32 = 0, $8 = 0, $__v = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__v = sp;
 $1 = $this + 4 | 0;
 $3 = HEAP32[$this >> 2] | 0;
 $8 = ((HEAP32[$1 >> 2] | 0) - $3 >> 3) + 1 | 0;
 if ($8 >>> 0 > 536870911) __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this);
 $13 = $3;
 $14 = (HEAP32[$this + 8 >> 2] | 0) - $13 | 0;
 if ($14 >> 3 >>> 0 < 268435455) {
  $17 = $14 >> 2;
  $$0$i = $17 >>> 0 < $8 >>> 0 ? $8 : $17;
 } else $$0$i = 536870911;
 __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($__v, $$0$i, (HEAP32[$1 >> 2] | 0) - $13 >> 3, $this + 8 | 0);
 $24 = $__v + 8 | 0;
 $25 = HEAP32[$24 >> 2] | 0;
 $26 = $__x;
 $31 = HEAP32[$26 + 4 >> 2] | 0;
 $32 = $25;
 HEAP32[$32 >> 2] = HEAP32[$26 >> 2];
 HEAP32[$32 + 4 >> 2] = $31;
 HEAP32[$24 >> 2] = $25 + 8;
 __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v);
 __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($__v);
 STACKTOP = sp;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) {
 $this = $this | 0;
 $__n = $__n | 0;
 var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0;
 if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0;
 $6 = HEAP32[$this + 4 >> 2] | 0;
 if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) {
  if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0;
  $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0;
  if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0;
  $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1;
  if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28);
 }
 return;
}

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, $10 = 0, $11 = 0, $13 = 0, $15 = 0, $3 = 0, $5 = 0, $8 = 0, $b = 0, $f = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 128 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $b = sp + 112 | 0;
 $f = sp;
 dest = $f;
 src = 2684;
 stop = dest + 112 | 0;
 do {
  HEAP32[dest >> 2] = HEAP32[src >> 2];
  dest = dest + 4 | 0;
  src = src + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 if (($n + -1 | 0) >>> 0 > 2147483646) if (!$n) {
  $$01 = $b;
  $$02 = 1;
  label = 4;
 } else {
  $3 = ___errno_location() | 0;
  HEAP32[$3 >> 2] = 75;
  $$0 = -1;
 } else {
  $$01 = $s;
  $$02 = $n;
  label = 4;
 }
 if ((label | 0) == 4) {
  $5 = -2 - $$01 | 0;
  $$$02 = $$02 >>> 0 > $5 >>> 0 ? $5 : $$02;
  HEAP32[$f + 48 >> 2] = $$$02;
  $8 = $f + 20 | 0;
  HEAP32[$8 >> 2] = $$01;
  HEAP32[$f + 44 >> 2] = $$01;
  $10 = $$01 + $$$02 | 0;
  $11 = $f + 16 | 0;
  HEAP32[$11 >> 2] = $10;
  HEAP32[$f + 28 >> 2] = $10;
  $13 = _vfprintf($f, $fmt, $ap) | 0;
  if (!$$$02) $$0 = $13; else {
   $15 = HEAP32[$8 >> 2] | 0;
   HEAP8[$15 + ((($15 | 0) == (HEAP32[$11 >> 2] | 0)) << 31 >> 31) >> 0] = 0;
   $$0 = $13;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6rehashEj($this, $__n) {
 $this = $this | 0;
 $__n = $__n | 0;
 var $20 = 0, $27 = 0, $28 = 0, $30 = 0, $6 = 0, $__n1 = 0;
 if (($__n | 0) == 1) $__n1 = 2; else if (!($__n + -1 & $__n)) $__n1 = $__n; else $__n1 = __ZNSt3__112__next_primeEj($__n) | 0;
 $6 = HEAP32[$this + 4 >> 2] | 0;
 if ($__n1 >>> 0 > $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $__n1); else if ($__n1 >>> 0 < $6 >>> 0) {
  if ($6 >>> 0 > 2) $30 = ($6 + -1 & $6 | 0) == 0; else $30 = 0;
  $20 = ~~+Math_ceil(+(+((HEAP32[$this + 12 >> 2] | 0) >>> 0) / +HEAPF32[$this + 16 >> 2])) >>> 0;
  if ($30) $27 = 1 << 32 - (Math_clz32($20 + -1 | 0) | 0); else $27 = __ZNSt3__112__next_primeEj($20) | 0;
  $28 = $__n1 >>> 0 < $27 >>> 0 ? $27 : $__n1;
  if ($28 >>> 0 < $6 >>> 0) __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE8__rehashEj($this, $28);
 }
 return;
}

function _addMarker($id, $patt_name) {
 $id = $id | 0;
 $patt_name = $patt_name | 0;
 var $$0 = 0, $0 = 0, $11 = 0, $13 = 0, $14 = 0, $3 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 $0 = sp + 12 | 0;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if (!(HEAP8[$patt_name >> 0] & 1)) $13 = $patt_name + 1 | 0; else $13 = HEAP32[$patt_name + 8 >> 2] | 0;
  $11 = $3 + 216 | 0;
  $14 = _arPattLoad(HEAP32[$11 >> 2] | 0, $13) | 0;
  HEAP32[$3 + 260 >> 2] = $14;
  if (($14 | 0) < 0) {
   HEAP32[$vararg_buffer >> 2] = $13;
   _arLog(3, 6311, $vararg_buffer);
   _arPattDeleteHandle(HEAP32[$11 >> 2] | 0) | 0;
   _arLog(3, 6357, $vararg_buffer1);
   $$0 = -1;
  } else $$0 = $14;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _icpGetDeltaS($S, $dU, $J_U_S, $n) {
 $S = $S | 0;
 $dU = $dU | 0;
 $J_U_S = $J_U_S | 0;
 $n = $n | 0;
 var $$0 = 0, $10 = 0, $6 = 0, $8 = 0, $matJ = 0, $matS = 0, $matU = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 48 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $matS = sp + 24 | 0;
 $matU = sp + 12 | 0;
 $matJ = sp;
 HEAP32[$matS + 4 >> 2] = 6;
 HEAP32[$matS + 8 >> 2] = 1;
 HEAP32[$matS >> 2] = $S;
 HEAP32[$matU + 4 >> 2] = $n;
 HEAP32[$matU + 8 >> 2] = 1;
 HEAP32[$matU >> 2] = $dU;
 HEAP32[$matJ + 4 >> 2] = $n;
 HEAP32[$matJ + 8 >> 2] = 6;
 HEAP32[$matJ >> 2] = $J_U_S;
 $6 = _arMatrixAllocTrans($matJ) | 0;
 do if (!$6) $$0 = -1; else {
  $8 = _arMatrixAllocMul($6, $matJ) | 0;
  if (!$8) {
   _arMatrixFree($6) | 0;
   $$0 = -1;
   break;
  }
  $10 = _arMatrixAllocMul($6, $matU) | 0;
  if (!$10) {
   _arMatrixFree($6) | 0;
   _arMatrixFree($8) | 0;
   $$0 = -1;
   break;
  }
  if ((_arMatrixSelfInv($8) | 0) < 0) {
   _arMatrixFree($6) | 0;
   _arMatrixFree($8) | 0;
   _arMatrixFree($10) | 0;
   $$0 = -1;
   break;
  } else {
   _arMatrixMul($matS, $8, $10) | 0;
   _arMatrixFree($6) | 0;
   _arMatrixFree($8) | 0;
   _arMatrixFree($10) | 0;
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _getTransMatMultiSquareRobust($id, $multiMarkerId) {
 $id = $id | 0;
 $multiMarkerId = $multiMarkerId | 0;
 var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $8 = HEAP32[$4 + 248 >> 2] | 0;
  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {
   $$0 = HEAP32[524] | 0;
   break;
  } else {
   $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;
   $21 = HEAP32[$4 + 212 >> 2] | 0;
   +_arGetTransMatMultiSquareRobust(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17);
   _matrixCopy($17 + 8 | 0, 264);
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, $percentile, $value_p) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 $percentile = +$percentile;
 $value_p = $value_p | 0;
 var $$0 = 0, $$in = 0, $$lcssa10 = 0, $$lcssa9 = 0, $11 = 0, $12 = 0, $14 = 0, $18 = 0, $2 = 0, $i$0 = 0, $i$0$lcssa = 0, $j$0$lcssa = 0;
 if ($percentile < 0.0 | $percentile > 1.0) $$0 = -1; else {
  $2 = _arImageProcLumaHistAndCDF($ipi, $dataPtr) | 0;
  if (($2 | 0) < 0) $$0 = $2; else {
   $11 = ~~(+(Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0) * $percentile) >>> 0;
   $i$0 = 0;
   while (1) {
    $12 = $i$0 & 255;
    $14 = HEAP32[$ipi + 1040 + ($12 << 2) >> 2] | 0;
    if ($14 >>> 0 < $11 >>> 0) $i$0 = $i$0 + 1 << 24 >> 24; else {
     $$lcssa10 = $14;
     $$lcssa9 = $12;
     $i$0$lcssa = $i$0;
     break;
    }
   }
   if (($$lcssa10 | 0) == ($11 | 0)) {
    $$in = $i$0$lcssa;
    while (1) {
     $18 = $$in + 1 << 24 >> 24;
     if ((HEAP32[$ipi + 1040 + (($18 & 255) << 2) >> 2] | 0) == ($11 | 0)) $$in = $18; else {
      $j$0$lcssa = $18;
      break;
     }
    }
   } else $j$0$lcssa = $i$0$lcssa;
   HEAP8[$value_p >> 0] = (($j$0$lcssa & 255) + $$lcssa9 | 0) >>> 1;
   $$0 = 0;
  }
 }
 return $$0 | 0;
}

function _getTransMatMultiSquare($id, $multiMarkerId) {
 $id = $id | 0;
 $multiMarkerId = $multiMarkerId | 0;
 var $$0 = 0, $0 = 0, $17 = 0, $21 = 0, $4 = 0, $8 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $8 = HEAP32[$4 + 248 >> 2] | 0;
  if (($multiMarkerId | 0) < 0 ? 1 : (HEAP32[$4 + 252 >> 2] | 0) - $8 >> 3 >>> 0 <= $multiMarkerId >>> 0) {
   $$0 = HEAP32[524] | 0;
   break;
  } else {
   $17 = HEAP32[$8 + ($multiMarkerId << 3) + 4 >> 2] | 0;
   $21 = HEAP32[$4 + 212 >> 2] | 0;
   +_arGetTransMatMultiSquare(HEAP32[$4 + 224 >> 2] | 0, $21 + 48 | 0, HEAP32[$21 + 44 >> 2] | 0, $17);
   _matrixCopy($17 + 8 | 0, 264);
   $$0 = 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arPattDeleteHandle($pattHandle) {
 $pattHandle = $pattHandle | 0;
 var $$0 = 0, $1 = 0, $11 = 0, $18 = 0, $2 = 0, $25 = 0, $3 = 0, $32 = 0, $4 = 0, $i$03 = 0;
 if (!$pattHandle) $$0 = -1; else {
  $1 = $pattHandle + 4 | 0;
  $2 = $pattHandle + 8 | 0;
  $3 = $pattHandle + 12 | 0;
  $4 = $pattHandle + 20 | 0;
  if ((HEAP32[$1 >> 2] | 0) > 0) {
   $i$03 = 0;
   do {
    if (HEAP32[(HEAP32[$2 >> 2] | 0) + ($i$03 << 2) >> 2] | 0) _arPattFree($pattHandle, $i$03) | 0;
    $11 = $i$03 << 2;
    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($11 << 2) >> 2] | 0);
    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($11 << 2) >> 2] | 0);
    $18 = 1 + $11 | 0;
    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($18 << 2) >> 2] | 0);
    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($18 << 2) >> 2] | 0);
    $25 = 2 + $11 | 0;
    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($25 << 2) >> 2] | 0);
    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($25 << 2) >> 2] | 0);
    $32 = 3 + $11 | 0;
    _free(HEAP32[(HEAP32[$3 >> 2] | 0) + ($32 << 2) >> 2] | 0);
    _free(HEAP32[(HEAP32[$4 >> 2] | 0) + ($32 << 2) >> 2] | 0);
    $i$03 = $i$03 + 1 | 0;
   } while (($i$03 | 0) < (HEAP32[$1 >> 2] | 0));
  }
  _free($pattHandle);
  $$0 = 0;
 }
 return $$0 | 0;
}

function _atoi($s) {
 $s = $s | 0;
 var $$0 = 0, $$0$lcssa = 0, $$1$ph = 0, $$13 = 0, $$lcssa9 = 0, $11 = 0, $4 = 0, $5 = 0, $8 = 0, $isdigittmp1 = 0, $isdigittmp5 = 0, $n$0$lcssa = 0, $n$04 = 0, $neg$0 = 0, $neg$1$ph = 0, label = 0;
 $$0 = $s;
 while (1) {
  $4 = $$0 + 1 | 0;
  if (!(_isspace(HEAP8[$$0 >> 0] | 0) | 0)) {
   $$0$lcssa = $$0;
   $$lcssa9 = $4;
   break;
  } else $$0 = $4;
 }
 $5 = HEAP8[$$0$lcssa >> 0] | 0;
 switch ($5 << 24 >> 24 | 0) {
 case 45:
  {
   $neg$0 = 1;
   label = 5;
   break;
  }
 case 43:
  {
   $neg$0 = 0;
   label = 5;
   break;
  }
 default:
  {
   $$1$ph = $$0$lcssa;
   $8 = $5;
   $neg$1$ph = 0;
  }
 }
 if ((label | 0) == 5) {
  $$1$ph = $$lcssa9;
  $8 = HEAP8[$$lcssa9 >> 0] | 0;
  $neg$1$ph = $neg$0;
 }
 $isdigittmp1 = ($8 << 24 >> 24) + -48 | 0;
 if ($isdigittmp1 >>> 0 < 10) {
  $$13 = $$1$ph;
  $isdigittmp5 = $isdigittmp1;
  $n$04 = 0;
  while (1) {
   $$13 = $$13 + 1 | 0;
   $11 = ($n$04 * 10 | 0) - $isdigittmp5 | 0;
   $isdigittmp5 = (HEAP8[$$13 >> 0] | 0) + -48 | 0;
   if ($isdigittmp5 >>> 0 >= 10) {
    $n$0$lcssa = $11;
    break;
   } else $n$04 = $11;
  }
 } else $n$0$lcssa = 0;
 return (($neg$1$ph | 0) != 0 ? $n$0$lcssa : 0 - $n$0$lcssa | 0) | 0;
}

function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) {
 $this = $this | 0;
 $__k = $__k | 0;
 var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__h = sp + 8 | 0;
 $0 = sp;
 $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;
 if (!$1) {
  __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k);
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0);
  $5 = HEAP32[$0 >> 2] | 0;
  HEAP32[$__h >> 2] = 0;
  $$pn3 = $5;
 } else $$pn3 = $1;
 STACKTOP = sp;
 return $$pn3 + 16 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9push_backEc($this, $__c) {
 $this = $this | 0;
 $__c = $__c | 0;
 var $$pn = 0, $0 = 0, $19 = 0, $2 = 0, $20 = 0, $__cap$0 = 0, $__p$0$sum$pre$phiZZZ2D = 0, $__sz$0 = 0, label = 0;
 $0 = HEAP8[$this >> 0] | 0;
 $2 = ($0 & 1) != 0;
 if ($2) {
  $__cap$0 = (HEAP32[$this >> 2] & -2) + -1 | 0;
  $__sz$0 = HEAP32[$this + 4 >> 2] | 0;
 } else {
  $__cap$0 = 10;
  $__sz$0 = ($0 & 255) >>> 1;
 }
 if (($__sz$0 | 0) == ($__cap$0 | 0)) {
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__cap$0, 1, $__cap$0, $__cap$0, 0);
  if (!(HEAP8[$this >> 0] & 1)) label = 7; else label = 8;
 } else if ($2) label = 8; else label = 7;
 if ((label | 0) == 7) {
  HEAP8[$this >> 0] = ($__sz$0 << 1) + 2;
  $$pn = $this + 1 | 0;
  $__p$0$sum$pre$phiZZZ2D = $__sz$0 + 1 | 0;
 } else if ((label | 0) == 8) {
  $19 = HEAP32[$this + 8 >> 2] | 0;
  $20 = $__sz$0 + 1 | 0;
  HEAP32[$this + 4 >> 2] = $20;
  $$pn = $19;
  $__p$0$sum$pre$phiZZZ2D = $20;
 }
 HEAP8[$$pn + $__sz$0 >> 0] = $__c;
 HEAP8[$$pn + $__p$0$sum$pre$phiZZZ2D >> 0] = 0;
 return;
}

function __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i($this, $info, $dst_ptr, $current_ptr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $dst_ptr = $dst_ptr | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 var $16 = 0, $17 = 0, $23 = 0, $25 = 0, $5 = 0, $6 = 0;
 HEAP8[$info + 53 >> 0] = 1;
 do if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {
  HEAP8[$info + 52 >> 0] = 1;
  $5 = $info + 16 | 0;
  $6 = HEAP32[$5 >> 2] | 0;
  if (!$6) {
   HEAP32[$5 >> 2] = $dst_ptr;
   HEAP32[$info + 24 >> 2] = $path_below;
   HEAP32[$info + 36 >> 2] = 1;
   if (!(($path_below | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0)) break;
   HEAP8[$info + 54 >> 0] = 1;
   break;
  }
  if (($6 | 0) != ($dst_ptr | 0)) {
   $25 = $info + 36 | 0;
   HEAP32[$25 >> 2] = (HEAP32[$25 >> 2] | 0) + 1;
   HEAP8[$info + 54 >> 0] = 1;
   break;
  }
  $16 = $info + 24 | 0;
  $17 = HEAP32[$16 >> 2] | 0;
  if (($17 | 0) == 2) {
   HEAP32[$16 >> 2] = $path_below;
   $23 = $path_below;
  } else $23 = $17;
  if (($23 | 0) == 1 ? (HEAP32[$info + 48 >> 2] | 0) == 1 : 0) HEAP8[$info + 54 >> 0] = 1;
 } while (0);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_117parse_call_offsetEPKcS2_($first, $last) {
 $first = $first | 0;
 $last = $last | 0;
 var $$0 = 0, $10 = 0, $11 = 0, $16 = 0, $17 = 0, $3 = 0, $4 = 0;
 L1 : do if (($first | 0) == ($last | 0)) $$0 = $first; else {
  switch (HEAP8[$first >> 0] | 0) {
  case 104:
   {
    $3 = $first + 1 | 0;
    $4 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($3, $last) | 0;
    if (($4 | 0) == ($3 | 0) | ($4 | 0) == ($last | 0)) {
     $$0 = $first;
     break L1;
    }
    $$0 = (HEAP8[$4 >> 0] | 0) == 95 ? $4 + 1 | 0 : $first;
    break L1;
    break;
   }
  case 118:
   break;
  default:
   {
    $$0 = $first;
    break L1;
   }
  }
  $10 = $first + 1 | 0;
  $11 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($10, $last) | 0;
  if (($11 | 0) == ($10 | 0) | ($11 | 0) == ($last | 0)) $$0 = $first; else if ((HEAP8[$11 >> 0] | 0) == 95) {
   $16 = $11 + 1 | 0;
   $17 = __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($16, $last) | 0;
   if (($17 | 0) == ($16 | 0) | ($17 | 0) == ($last | 0)) $$0 = $first; else return ((HEAP8[$17 >> 0] | 0) == 95 ? $17 + 1 | 0 : $first) | 0;
  } else $$0 = $first;
 } while (0);
 return $$0 | 0;
}

function _setup($width, $height, $cameraID) {
 $width = $width | 0;
 $height = $height | 0;
 $cameraID = $cameraID | 0;
 var $0 = 0, $10 = 0, $2 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $id = 0, $vararg_buffer1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 8 | 0;
 $id = sp + 12 | 0;
 $0 = HEAP32[525] | 0;
 HEAP32[525] = $0 + 1;
 HEAP32[$id >> 2] = $0;
 $2 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $id) | 0;
 HEAP32[$2 >> 2] = $0;
 HEAP32[$2 + 204 >> 2] = $width;
 HEAP32[$2 + 208 >> 2] = $height;
 $6 = Math_imul($width << 2, $height) | 0;
 $7 = $2 + 200 | 0;
 HEAP32[$7 >> 2] = $6;
 $8 = _malloc($6) | 0;
 $9 = $2 + 196 | 0;
 HEAP32[$9 >> 2] = $8;
 $10 = _arPattCreateHandle() | 0;
 HEAP32[$2 + 216 >> 2] = $10;
 if (!$10) _arLog(3, 8284, sp);
 _setCamera($0, $cameraID) | 0;
 HEAP32[$vararg_buffer1 >> 2] = HEAP32[$7 >> 2];
 _arLog(1, 8321, $vararg_buffer1);
 _emscripten_asm_const_5(2, HEAP32[$2 >> 2] | 0, HEAP32[$9 >> 2] | 0, HEAP32[$7 >> 2] | 0, $2 + 264 | 0, 264) | 0;
 STACKTOP = sp;
 return HEAP32[$2 >> 2] | 0;
}

function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_($this, $__k) {
 $this = $this | 0;
 $__k = $__k | 0;
 var $$pn3 = 0, $0 = 0, $1 = 0, $5 = 0, $__h = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $__h = sp + 8 | 0;
 $0 = sp;
 $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;
 if (!$1) {
  __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($__h, $this, $__k);
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE20__node_insert_uniqueEPNS_11__hash_nodeIS3_PvEE($0, $this, HEAP32[$__h >> 2] | 0);
  $5 = HEAP32[$0 >> 2] | 0;
  HEAP32[$__h >> 2] = 0;
  $$pn3 = $5;
 } else $$pn3 = $1;
 STACKTOP = sp;
 return $$pn3 + 16 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE9__grow_byEjjjjjj($this, $__old_cap, $__delta_cap, $__old_sz, $__n_copy, $__n_add) {
 $this = $this | 0;
 $__old_cap = $__old_cap | 0;
 $__delta_cap = $__delta_cap | 0;
 $__old_sz = $__old_sz | 0;
 $__n_copy = $__n_copy | 0;
 $__n_add = $__n_add | 0;
 var $10 = 0, $12 = 0, $17 = 0, $18 = 0, $20 = 0, $9 = 0;
 if ((-17 - $__old_cap | 0) >>> 0 < $__delta_cap >>> 0) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);
 if (!(HEAP8[$this >> 0] & 1)) $20 = $this + 1 | 0; else $20 = HEAP32[$this + 8 >> 2] | 0;
 if ($__old_cap >>> 0 < 2147483623) {
  $9 = $__delta_cap + $__old_cap | 0;
  $10 = $__old_cap << 1;
  $12 = $9 >>> 0 < $10 >>> 0 ? $10 : $9;
  $17 = $12 >>> 0 < 11 ? 11 : $12 + 16 & -16;
 } else $17 = -17;
 $18 = _malloc($17) | 0;
 if ($__n_copy) _memcpy($18 | 0, $20 | 0, $__n_copy | 0) | 0;
 if (($__old_sz | 0) != ($__n_copy | 0)) _memcpy($18 + ($__n_add + $__n_copy) | 0, $20 + $__n_copy | 0, $__old_sz - $__n_copy | 0) | 0;
 if (($__old_cap | 0) != 10) _free($20);
 HEAP32[$this + 8 >> 2] = $18;
 HEAP32[$this >> 2] = $17 | 1;
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) {
 $this = $this | 0;
 $__k = $__k | 0;
 var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0;
 $0 = HEAP32[$__k >> 2] | 0;
 $2 = HEAP32[$this + 4 >> 2] | 0;
 L1 : do if (!$2) $24 = 0; else {
  $4 = $2 + -1 | 0;
  $6 = ($4 & $2 | 0) == 0;
  if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0;
  $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0;
  if (!$12) $24 = 0; else {
   $$pn = $12;
   while (1) {
    $__nd$0 = HEAP32[$$pn >> 2] | 0;
    if (!$__nd$0) {
     $24 = 0;
     break L1;
    }
    $16 = HEAP32[$__nd$0 + 4 >> 2] | 0;
    if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0;
    if (($20 | 0) != ($11 | 0)) {
     $24 = 0;
     break L1;
    }
    if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) {
     $24 = $__nd$0;
     break;
    } else $$pn = $__nd$0;
   }
  }
 } while (0);
 return $24 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) {
 $this = $this | 0;
 $__k = $__k | 0;
 var $$pn = 0, $0 = 0, $11 = 0, $12 = 0, $16 = 0, $2 = 0, $20 = 0, $24 = 0, $4 = 0, $6 = 0, $__nd$0 = 0;
 $0 = HEAP32[$__k >> 2] | 0;
 $2 = HEAP32[$this + 4 >> 2] | 0;
 L1 : do if (!$2) $24 = 0; else {
  $4 = $2 + -1 | 0;
  $6 = ($4 & $2 | 0) == 0;
  if ($6) $11 = $4 & $0; else $11 = ($0 >>> 0) % ($2 >>> 0) | 0;
  $12 = HEAP32[(HEAP32[$this >> 2] | 0) + ($11 << 2) >> 2] | 0;
  if (!$12) $24 = 0; else {
   $$pn = $12;
   while (1) {
    $__nd$0 = HEAP32[$$pn >> 2] | 0;
    if (!$__nd$0) {
     $24 = 0;
     break L1;
    }
    $16 = HEAP32[$__nd$0 + 4 >> 2] | 0;
    if ($6) $20 = $16 & $4; else $20 = ($16 >>> 0) % ($2 >>> 0) | 0;
    if (($20 | 0) != ($11 | 0)) {
     $24 = 0;
     break L1;
    }
    if ((HEAP32[$__nd$0 + 8 >> 2] | 0) == ($0 | 0)) {
     $24 = $__nd$0;
     break;
    } else $$pn = $__nd$0;
   }
  }
 } while (0);
 return $24 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE14__erase_uniqueIiEEjRKT_($this, $__k) {
 $this = $this | 0;
 $__k = $__k | 0;
 var $$0 = 0, $$byval_copy = 0, $0 = 0, $1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $$byval_copy = sp + 4 | 0;
 $0 = sp;
 $1 = __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_($this, $__k) | 0;
 if (!$1) $$0 = 0; else {
  HEAP32[$0 >> 2] = $1;
  HEAP32[$$byval_copy >> 2] = HEAP32[$0 >> 2];
  __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $$byval_copy) | 0;
  $$0 = 1;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE5eraseENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($this, $__p) {
 $this = $this | 0;
 $__p = $__p | 0;
 var $$byval_copy = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $$byval_copy = sp + 16 | 0;
 $0 = sp + 4 | 0;
 $1 = sp;
 $2 = HEAP32[$__p >> 2] | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 HEAP32[$1 >> 2] = $2;
 HEAP32[$$byval_copy >> 2] = HEAP32[$1 >> 2];
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE6removeENS_21__hash_const_iteratorIPNS_11__hash_nodeIS3_PvEEEE($0, $this, $$byval_copy);
 $4 = HEAP32[$0 >> 2] | 0;
 HEAP32[$0 >> 2] = 0;
 if ($4) {
  if (HEAP8[$0 + 8 >> 0] | 0) __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($4 + 264 | 0);
  __ZdlPv($4);
 }
 STACKTOP = sp;
 return $3 | 0;
}

function __ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $adjustedPtr) {
 $this = $this | 0;
 $thrown_type = $thrown_type | 0;
 $adjustedPtr = $adjustedPtr | 0;
 var $$0 = 0, $$1 = 0, $2 = 0, $info = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 64 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $info = sp;
 if (($this | 0) == ($thrown_type | 0)) $$1 = 1; else if (!$thrown_type) $$1 = 0; else {
  $2 = ___dynamic_cast($thrown_type, 576, 592, 0) | 0;
  if (!$2) $$1 = 0; else {
   dest = $info;
   stop = dest + 56 | 0;
   do {
    HEAP32[dest >> 2] = 0;
    dest = dest + 4 | 0;
   } while ((dest | 0) < (stop | 0));
   HEAP32[$info >> 2] = $2;
   HEAP32[$info + 8 >> 2] = $this;
   HEAP32[$info + 12 >> 2] = -1;
   HEAP32[$info + 48 >> 2] = 1;
   FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$2 >> 2] | 0) + 28 >> 2] & 3]($2, $info, HEAP32[$adjustedPtr >> 2] | 0, 1);
   if ((HEAP32[$info + 24 >> 2] | 0) == 1) {
    HEAP32[$adjustedPtr >> 2] = HEAP32[$info + 16 >> 2];
    $$0 = 1;
   } else $$0 = 0;
   $$1 = $$0;
  }
 }
 STACKTOP = sp;
 return $$1 | 0;
}

function __ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $14 = 0, $20 = 0, $6 = 0;
 do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) {
  if ((HEAP32[$info + 4 >> 2] | 0) == ($current_ptr | 0)) {
   $6 = $info + 28 | 0;
   if ((HEAP32[$6 >> 2] | 0) != 1) HEAP32[$6 >> 2] = $path_below;
  }
 } else if (($this | 0) == (HEAP32[$info >> 2] | 0)) {
  if ((HEAP32[$info + 16 >> 2] | 0) != ($current_ptr | 0)) {
   $14 = $info + 20 | 0;
   if ((HEAP32[$14 >> 2] | 0) != ($current_ptr | 0)) {
    HEAP32[$info + 32 >> 2] = $path_below;
    HEAP32[$14 >> 2] = $current_ptr;
    $20 = $info + 40 | 0;
    HEAP32[$20 >> 2] = (HEAP32[$20 >> 2] | 0) + 1;
    if ((HEAP32[$info + 36 >> 2] | 0) == 1) if ((HEAP32[$info + 24 >> 2] | 0) == 2) HEAP8[$info + 54 >> 0] = 1;
    HEAP32[$info + 44 >> 2] = 4;
    break;
   }
  }
  if (($path_below | 0) == 1) HEAP32[$info + 32 >> 2] = 1;
 } while (0);
 return;
}

function _getTransMatSquareCont($id, $markerIndex, $markerWidth) {
 $id = $id | 0;
 $markerIndex = $markerIndex | 0;
 $markerWidth = $markerWidth | 0;
 var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $6 = HEAP32[$4 + 212 >> 2] | 0;
  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {
   +_arGetTransMatSquareCont(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, 264, +($markerWidth | 0), 264);
   $$0 = 0;
   break;
  } else {
   $$0 = HEAP32[523] | 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arPattLoad($pattHandle, $filename) {
 $pattHandle = $pattHandle | 0;
 $filename = $filename | 0;
 var $$0 = 0, $0 = 0, $2 = 0, $4 = 0, $6 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer1 = 0, $vararg_buffer3 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer1 = sp + 8 | 0;
 $vararg_buffer = sp;
 $0 = _fopen($filename, 4854) | 0;
 do if (!$0) {
  HEAP32[$vararg_buffer >> 2] = $filename;
  _arLog(3, 4774, $vararg_buffer);
  $$0 = -1;
 } else {
  _fseek($0, 0, 2) | 0;
  $2 = _ftell($0) | 0;
  _fseek($0, 0, 0) | 0;
  $4 = _malloc($2 + 1 | 0) | 0;
  if (!$4) {
   _arLog(3, 5471, $vararg_buffer1);
   _fclose($0) | 0;
   $$0 = -1;
   break;
  }
  $6 = _fread($4, $2, 1, $0) | 0;
  _fclose($0) | 0;
  if (!$6) {
   HEAP32[$vararg_buffer3 >> 2] = $filename;
   _arLog(3, 4820, $vararg_buffer3);
   _free($4);
   $$0 = -1;
   break;
  } else {
   HEAP8[$4 + $2 >> 0] = 0;
   $9 = _arPattLoadFromBuffer($pattHandle, $4) | 0;
   _free($4);
   $$0 = $9;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _fmt_u($0, $1, $s) {
 $0 = $0 | 0;
 $1 = $1 | 0;
 $s = $s | 0;
 var $$0$lcssa = 0, $$01$lcssa$off0 = 0, $$05 = 0, $$1$lcssa = 0, $$12 = 0, $$lcssa20 = 0, $13 = 0, $14 = 0, $25 = 0, $28 = 0, $7 = 0, $8 = 0, $9 = 0, $y$03 = 0;
 if ($1 >>> 0 > 0 | ($1 | 0) == 0 & $0 >>> 0 > 4294967295) {
  $$05 = $s;
  $7 = $0;
  $8 = $1;
  while (1) {
   $9 = ___uremdi3($7 | 0, $8 | 0, 10, 0) | 0;
   $13 = $$05 + -1 | 0;
   HEAP8[$13 >> 0] = $9 | 48;
   $14 = ___udivdi3($7 | 0, $8 | 0, 10, 0) | 0;
   if ($8 >>> 0 > 9 | ($8 | 0) == 9 & $7 >>> 0 > 4294967295) {
    $$05 = $13;
    $7 = $14;
    $8 = tempRet0;
   } else {
    $$lcssa20 = $13;
    $28 = $14;
    break;
   }
  }
  $$0$lcssa = $$lcssa20;
  $$01$lcssa$off0 = $28;
 } else {
  $$0$lcssa = $s;
  $$01$lcssa$off0 = $0;
 }
 if (!$$01$lcssa$off0) $$1$lcssa = $$0$lcssa; else {
  $$12 = $$0$lcssa;
  $y$03 = $$01$lcssa$off0;
  while (1) {
   $25 = $$12 + -1 | 0;
   HEAP8[$25 >> 0] = ($y$03 >>> 0) % 10 | 0 | 48;
   if ($y$03 >>> 0 < 10) {
    $$1$lcssa = $25;
    break;
   } else {
    $$12 = $25;
    $y$03 = ($y$03 >>> 0) / 10 | 0;
   }
  }
 }
 return $$1$lcssa | 0;
}

function _byteswap($param) {
 $param = $param | 0;
 var $$lcssa = 0, $15 = 0, $2 = 0, $i$13 = 0, $j$05 = 0, $wparam = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 192 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $wparam = sp;
 _byteSwapInt($param, $wparam);
 _byteSwapInt($param + 4 | 0, $wparam + 4 | 0);
 $j$05 = 0;
 do {
  _byteSwapDouble($param + 8 + ($j$05 << 5) | 0, $wparam + 8 + ($j$05 << 5) | 0);
  _byteSwapDouble($param + 8 + ($j$05 << 5) + 8 | 0, $wparam + 8 + ($j$05 << 5) + 8 | 0);
  _byteSwapDouble($param + 8 + ($j$05 << 5) + 16 | 0, $wparam + 8 + ($j$05 << 5) + 16 | 0);
  _byteSwapDouble($param + 8 + ($j$05 << 5) + 24 | 0, $wparam + 8 + ($j$05 << 5) + 24 | 0);
  $j$05 = $j$05 + 1 | 0;
 } while (($j$05 | 0) != 3);
 $2 = $param + 176 | 0;
 $i$13 = 0;
 do {
  _byteSwapDouble($param + 104 + ($i$13 << 3) | 0, $wparam + 104 + ($i$13 << 3) | 0);
  $i$13 = $i$13 + 1 | 0;
  $15 = HEAP32[$2 >> 2] | 0;
 } while (($i$13 | 0) < (HEAP32[2012 + ($15 + -1 << 3) >> 2] | 0));
 $$lcssa = $15;
 HEAP32[$wparam + 176 >> 2] = $$lcssa;
 _memcpy($param | 0, $wparam | 0, 184) | 0;
 STACKTOP = sp;
 return;
}

function _getTransMatSquare($id, $markerIndex, $markerWidth) {
 $id = $id | 0;
 $markerIndex = $markerIndex | 0;
 $markerWidth = $markerWidth | 0;
 var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $6 = HEAP32[$4 + 212 >> 2] | 0;
  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {
   +_arGetTransMatSquare(HEAP32[$4 + 224 >> 2] | 0, ($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0, +($markerWidth | 0), 264);
   $$0 = 0;
   break;
  } else {
   $$0 = HEAP32[523] | 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _arMatrixTrans($dest, $source) {
 $dest = $dest | 0;
 $source = $source | 0;
 var $$0 = 0, $1 = 0, $13 = 0, $6 = 0, $c$01 = 0, $p1$02 = 0, $p2$05 = 0, $p2$13 = 0, $r$04 = 0, $smax = 0;
 $1 = HEAP32[$dest + 4 >> 2] | 0;
 if (($1 | 0) == (HEAP32[$source + 8 >> 2] | 0)) {
  $6 = HEAP32[$dest + 8 >> 2] | 0;
  if (($6 | 0) == (HEAP32[$source + 4 >> 2] | 0)) {
   $smax = ($6 | 0) > 0 ? $6 : 0;
   if (($1 | 0) > 0) {
    $13 = ($6 | 0) > 0;
    $p2$05 = HEAP32[$dest >> 2] | 0;
    $r$04 = 0;
    while (1) {
     if ($13) {
      $c$01 = 0;
      $p1$02 = (HEAP32[$source >> 2] | 0) + ($r$04 << 3) | 0;
      $p2$13 = $p2$05;
      while (1) {
       HEAPF64[$p2$13 >> 3] = +HEAPF64[$p1$02 >> 3];
       $c$01 = $c$01 + 1 | 0;
       if (($c$01 | 0) >= ($6 | 0)) break; else {
        $p1$02 = $p1$02 + ($1 << 3) | 0;
        $p2$13 = $p2$13 + 8 | 0;
       }
      }
     }
     $r$04 = $r$04 + 1 | 0;
     if (($r$04 | 0) >= ($1 | 0)) {
      $$0 = 0;
      break;
     } else $p2$05 = $p2$05 + ($smax << 3) | 0;
    }
   } else $$0 = 0;
  } else $$0 = -1;
 } else $$0 = -1;
 return $$0 | 0;
}

function _fflush($f) {
 $f = $f | 0;
 var $$0 = 0, $$012 = 0, $$014 = 0, $24 = 0, $27 = 0, $6 = 0, $phitmp = 0, $r$0$lcssa = 0, $r$03 = 0, $r$1 = 0;
 do if (!$f) {
  if (!(HEAP32[660] | 0)) $27 = 0; else $27 = _fflush(HEAP32[660] | 0) | 0;
  ___lock(2416);
  $$012 = HEAP32[603] | 0;
  if (!$$012) $r$0$lcssa = $27; else {
   $$014 = $$012;
   $r$03 = $27;
   while (1) {
    if ((HEAP32[$$014 + 76 >> 2] | 0) > -1) $24 = ___lockfile($$014) | 0; else $24 = 0;
    if ((HEAP32[$$014 + 20 >> 2] | 0) >>> 0 > (HEAP32[$$014 + 28 >> 2] | 0) >>> 0) $r$1 = ___fflush_unlocked($$014) | 0 | $r$03; else $r$1 = $r$03;
    if ($24) ___unlockfile($$014);
    $$014 = HEAP32[$$014 + 56 >> 2] | 0;
    if (!$$014) {
     $r$0$lcssa = $r$1;
     break;
    } else $r$03 = $r$1;
   }
  }
  ___unlock(2416);
  $$0 = $r$0$lcssa;
 } else {
  if ((HEAP32[$f + 76 >> 2] | 0) <= -1) {
   $$0 = ___fflush_unlocked($f) | 0;
   break;
  }
  $phitmp = (___lockfile($f) | 0) == 0;
  $6 = ___fflush_unlocked($f) | 0;
  if ($phitmp) $$0 = $6; else {
   ___unlockfile($f);
   $$0 = $6;
  }
 } while (0);
 return $$0 | 0;
}

function __ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $adjustedPtr = $adjustedPtr | 0;
 $path_below = $path_below | 0;
 var $5 = 0, $6 = 0, $9 = 0, $p$0 = 0;
 L1 : do if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else {
  $5 = HEAP32[$this + 12 >> 2] | 0;
  $6 = $this + 16 + ($5 << 3) | 0;
  __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this + 16 | 0, $info, $adjustedPtr, $path_below);
  if (($5 | 0) > 1) {
   $9 = $info + 54 | 0;
   $p$0 = $this + 24 | 0;
   do {
    __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($p$0, $info, $adjustedPtr, $path_below);
    if (HEAP8[$9 >> 0] | 0) break L1;
    $p$0 = $p$0 + 8 | 0;
   } while ($p$0 >>> 0 < $6 >>> 0);
  }
 } while (0);
 return;
}

function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEE26__swap_out_circular_bufferERNS_14__split_bufferIS3_RS5_EE($this, $__v) {
 $this = $this | 0;
 $__v = $__v | 0;
 var $$0$i1 = 0, $0 = 0, $1 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $2 = 0, $3 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 $1 = $this + 4 | 0;
 $2 = HEAP32[$1 >> 2] | 0;
 $3 = $__v + 4 | 0;
 if (($2 | 0) != ($0 | 0)) {
  $$0$i1 = $2;
  do {
   $$0$i1 = $$0$i1 + -24 | 0;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_((HEAP32[$3 >> 2] | 0) + -24 | 0, $$0$i1);
   HEAP32[$3 >> 2] = (HEAP32[$3 >> 2] | 0) + -24;
  } while (($$0$i1 | 0) != ($0 | 0));
 }
 $11 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = HEAP32[$3 >> 2];
 HEAP32[$3 >> 2] = $11;
 $13 = $__v + 8 | 0;
 $14 = HEAP32[$1 >> 2] | 0;
 HEAP32[$1 >> 2] = HEAP32[$13 >> 2];
 HEAP32[$13 >> 2] = $14;
 $16 = $this + 8 | 0;
 $17 = $__v + 12 | 0;
 $18 = HEAP32[$16 >> 2] | 0;
 HEAP32[$16 >> 2] = HEAP32[$17 >> 2];
 HEAP32[$17 >> 2] = $18;
 HEAP32[$__v >> 2] = HEAP32[$3 >> 2];
 return;
}

function _strlen($s) {
 $s = $s | 0;
 var $$01$lcssa = 0, $$014 = 0, $$1$lcssa = 0, $$lcssa20 = 0, $$pn = 0, $$pn15 = 0, $0 = 0, $18 = 0, $21 = 0, $5 = 0, $9 = 0, $w$0 = 0, $w$0$lcssa = 0, label = 0;
 $0 = $s;
 L1 : do if (!($0 & 3)) {
  $$01$lcssa = $s;
  label = 4;
 } else {
  $$014 = $s;
  $21 = $0;
  while (1) {
   if (!(HEAP8[$$014 >> 0] | 0)) {
    $$pn = $21;
    break L1;
   }
   $5 = $$014 + 1 | 0;
   $21 = $5;
   if (!($21 & 3)) {
    $$01$lcssa = $5;
    label = 4;
    break;
   } else $$014 = $5;
  }
 } while (0);
 if ((label | 0) == 4) {
  $w$0 = $$01$lcssa;
  while (1) {
   $9 = HEAP32[$w$0 >> 2] | 0;
   if (!(($9 & -2139062144 ^ -2139062144) & $9 + -16843009)) $w$0 = $w$0 + 4 | 0; else {
    $$lcssa20 = $9;
    $w$0$lcssa = $w$0;
    break;
   }
  }
  if (!(($$lcssa20 & 255) << 24 >> 24)) $$1$lcssa = $w$0$lcssa; else {
   $$pn15 = $w$0$lcssa;
   while (1) {
    $18 = $$pn15 + 1 | 0;
    if (!(HEAP8[$18 >> 0] | 0)) {
     $$1$lcssa = $18;
     break;
    } else $$pn15 = $18;
   }
  }
  $$pn = $$1$lcssa;
 }
 return $$pn - $0 | 0;
}

function _setMarkerInfoDir($id, $markerIndex, $dir) {
 $id = $id | 0;
 $markerIndex = $markerIndex | 0;
 $dir = $dir | 0;
 var $$0 = 0, $0 = 0, $5 = 0, $6 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 do if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $5 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $6 = HEAP32[$5 >> 2] | 0;
  if ((HEAP32[$6 + 44 >> 2] | 0) > ($markerIndex | 0)) {
   HEAP32[(($markerIndex | 0) < 0 ? 8 : $6 + 48 + ($markerIndex << 8) | 0) + 16 >> 2] = $dir;
   $$0 = 0;
   break;
  } else {
   $$0 = HEAP32[523] | 0;
   break;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $__s, $__n) {
 $this = $this | 0;
 $__s = $__s | 0;
 $__n = $__n | 0;
 var $0 = 0, $10 = 0, $14 = 0, $27 = 0, $3 = 0, $7 = 0, $9 = 0;
 $0 = HEAP8[$this >> 0] | 0;
 if (!($0 & 1)) {
  $7 = 10;
  $9 = $0;
 } else {
  $3 = HEAP32[$this >> 2] | 0;
  $7 = ($3 & -2) + -1 | 0;
  $9 = $3 & 255;
 }
 $10 = ($9 & 1) == 0;
 do if ($7 >>> 0 < $__n >>> 0) {
  if ($10) $27 = ($9 & 255) >>> 1; else $27 = HEAP32[$this + 4 >> 2] | 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $7, $__n - $7 | 0, $27, 0, $27, $__n, $__s);
 } else {
  if ($10) $14 = $this + 1 | 0; else $14 = HEAP32[$this + 8 >> 2] | 0;
  _memmove($14 | 0, $__s | 0, $__n | 0) | 0;
  HEAP8[$14 + $__n >> 0] = 0;
  if (!(HEAP8[$this >> 0] & 1)) {
   HEAP8[$this >> 0] = $__n << 1;
   break;
  } else {
   HEAP32[$this + 4 >> 2] = $__n;
   break;
  }
 } while (0);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, $__n) {
 $this = $this | 0;
 $__s = $__s | 0;
 $__n = $__n | 0;
 var $0 = 0, $14 = 0, $15 = 0, $24 = 0, $25 = 0, $3 = 0, $7 = 0;
 $0 = HEAP8[$this >> 0] | 0;
 if (!($0 & 1)) {
  $14 = 10;
  $7 = $0;
 } else {
  $3 = HEAP32[$this >> 2] | 0;
  $14 = ($3 & -2) + -1 | 0;
  $7 = $3 & 255;
 }
 if (!($7 & 1)) $15 = ($7 & 255) >>> 1; else $15 = HEAP32[$this + 4 >> 2] | 0;
 if (($14 - $15 | 0) >>> 0 < $__n >>> 0) __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE21__grow_by_and_replaceEjjjjjjPKc($this, $14, $__n - $14 + $15 | 0, $15, $15, 0, $__n, $__s); else if ($__n) {
  if (!($7 & 1)) $24 = $this + 1 | 0; else $24 = HEAP32[$this + 8 >> 2] | 0;
  _memcpy($24 + $15 | 0, $__s | 0, $__n | 0) | 0;
  $25 = $15 + $__n | 0;
  if (!(HEAP8[$this >> 0] & 1)) HEAP8[$this >> 0] = $25 << 1; else HEAP32[$this + 4 >> 2] = $25;
  HEAP8[$24 + $25 >> 0] = 0;
 }
 return $this | 0;
}

function _pad($f, $c, $w, $l, $fl) {
 $f = $f | 0;
 $c = $c | 0;
 $w = $w | 0;
 $l = $l | 0;
 $fl = $fl | 0;
 var $$0$lcssa6 = 0, $$02 = 0, $10 = 0, $14 = 0, $17 = 0, $18 = 0, $3 = 0, $7 = 0, $9 = 0, $pad = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 256 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $pad = sp;
 do if (($w | 0) > ($l | 0) & ($fl & 73728 | 0) == 0) {
  $3 = $w - $l | 0;
  _memset($pad | 0, $c | 0, ($3 >>> 0 > 256 ? 256 : $3) | 0) | 0;
  $7 = HEAP32[$f >> 2] | 0;
  $9 = ($7 & 32 | 0) == 0;
  if ($3 >>> 0 > 255) {
   $10 = $w - $l | 0;
   $$02 = $3;
   $17 = $7;
   $18 = $9;
   while (1) {
    if ($18) {
     ___fwritex($pad, 256, $f) | 0;
     $14 = HEAP32[$f >> 2] | 0;
    } else $14 = $17;
    $$02 = $$02 + -256 | 0;
    $18 = ($14 & 32 | 0) == 0;
    if ($$02 >>> 0 <= 255) break; else $17 = $14;
   }
   if ($18) $$0$lcssa6 = $10 & 255; else break;
  } else if ($9) $$0$lcssa6 = $3; else break;
  ___fwritex($pad, $$0$lcssa6, $f) | 0;
 } while (0);
 STACKTOP = sp;
 return;
}

function _loadCamera($cparam_name) {
 $cparam_name = $cparam_name | 0;
 var $$0 = 0, $15 = 0, $16 = 0, $6 = 0, $cameraID = 0, $param = 0, $vararg_buffer1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 208 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer1 = sp + 192 | 0;
 $param = sp;
 $cameraID = sp + 196 | 0;
 if (!(HEAP8[$cparam_name >> 0] & 1)) $6 = $cparam_name + 1 | 0; else $6 = HEAP32[$cparam_name + 8 >> 2] | 0;
 if ((_arParamLoad($6, 1, $param, sp + 184 | 0) | 0) < 0) {
  if (!(HEAP8[$cparam_name >> 0] & 1)) $15 = $cparam_name + 1 | 0; else $15 = HEAP32[$cparam_name + 8 >> 2] | 0;
  HEAP32[$vararg_buffer1 >> 2] = $15;
  _arLog(3, 6092, $vararg_buffer1);
  $$0 = -1;
 } else {
  $16 = HEAP32[521] | 0;
  HEAP32[521] = $16 + 1;
  HEAP32[$cameraID >> 2] = $16;
  _memcpy(__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2064, $cameraID) | 0, $param | 0, 184) | 0;
  $$0 = $16;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _getMultiMarkerNum($id, $multiMarker_id) {
 $id = $id | 0;
 $multiMarker_id = $multiMarker_id | 0;
 var $$0 = 0, $0 = 0, $3 = 0, $8 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if (($multiMarker_id | 0) < 0) $$0 = -1; else {
   $8 = HEAP32[$3 + 248 >> 2] | 0;
   if ((HEAP32[$3 + 252 >> 2] | 0) - $8 >> 3 >>> 0 > $multiMarker_id >>> 0) $$0 = HEAP32[(HEAP32[$8 + ($multiMarker_id << 3) + 4 >> 2] | 0) + 4 >> 2] | 0; else $$0 = -1;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _arImageProcInit($xsize, $ysize, $pixFormat, $alwaysCopy) {
 $xsize = $xsize | 0;
 $ysize = $ysize | 0;
 $pixFormat = $pixFormat | 0;
 $alwaysCopy = $alwaysCopy | 0;
 var $$0 = 0, $0 = 0, $5 = 0, label = 0;
 $0 = _malloc(2080) | 0;
 L1 : do if (!$0) $$0 = $0; else {
  HEAP32[$0 + 2068 >> 2] = $pixFormat;
  L3 : do if (!$alwaysCopy) {
   switch ($pixFormat | 0) {
   case 5:
   case 12:
   case 13:
   case 14:
    break;
   default:
    {
     label = 4;
     break L3;
    }
   }
   HEAP32[$0 + 2076 >> 2] = 0;
  } else label = 4; while (0);
  do if ((label | 0) == 4) {
   $5 = _malloc(Math_imul($ysize, $xsize) | 0) | 0;
   HEAP32[$0 >> 2] = $5;
   if (!$5) {
    _free($0);
    $$0 = 0;
    break L1;
   } else {
    HEAP32[$0 + 2076 >> 2] = 1;
    break;
   }
  } while (0);
  HEAP32[$0 + 2072 >> 2] = $alwaysCopy;
  HEAP32[$0 + 4 >> 2] = 0;
  HEAP32[$0 + 8 >> 2] = $xsize;
  HEAP32[$0 + 12 >> 2] = $ysize;
  $$0 = $0;
 } while (0);
 return $$0 | 0;
}

function _setPattRatio($id, $ratio) {
 $id = $id | 0;
 $ratio = +$ratio;
 var $0 = 0, $3 = 0, $6 = 0.0, $8 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 8 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if (!($ratio <= 0.0 | $ratio >= 1.0)) {
   $6 = $ratio;
   $8 = HEAP32[$3 + 212 >> 2] | 0;
   if ($8) if (!(_arSetPattRatio($8, $6) | 0)) {
    HEAPF64[$vararg_buffer >> 3] = $6;
    _arLog(1, 6512, $vararg_buffer);
   }
  }
 }
 STACKTOP = sp;
 return;
}

function _setDebugMode($id, $enable) {
 $id = $id | 0;
 $enable = $enable | 0;
 var $$0 = 0, $0 = 0, $4 = 0, $6 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $6 = ($enable | 0) != 0;
  _arSetDebugMode(HEAP32[$4 >> 2] | 0, $6 & 1) | 0;
  HEAP32[$vararg_buffer >> 2] = $6 ? 6615 : 6619;
  _arLog(1, 6624, $vararg_buffer);
  $$0 = $enable;
 }
 STACKTOP = sp;
 return $$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, $10$0 = 0, $10$1 = 0, __stackBase__ = 0;
 __stackBase__ = STACKTOP;
 STACKTOP = STACKTOP + 16 | 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;
 ___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 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 _fopen($filename, $mode) {
 $filename = $filename | 0;
 $mode = $mode | 0;
 var $$0 = 0, $3 = 0, $5 = 0, $7 = 0, $9 = 0, $vararg_buffer = 0, $vararg_buffer3 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer3 = sp + 16 | 0;
 $vararg_buffer = sp;
 if (!(_memchr(16759, HEAP8[$mode >> 0] | 0, 4) | 0)) {
  $3 = ___errno_location() | 0;
  HEAP32[$3 >> 2] = 22;
  $$0 = 0;
 } else {
  $5 = ___fmodeflags($mode) | 0 | 32768;
  HEAP32[$vararg_buffer >> 2] = $filename;
  HEAP32[$vararg_buffer + 4 >> 2] = $5;
  HEAP32[$vararg_buffer + 8 >> 2] = 438;
  $7 = ___syscall_ret(___syscall5(5, $vararg_buffer | 0) | 0) | 0;
  if (($7 | 0) < 0) $$0 = 0; else {
   $9 = ___fdopen($7, $mode) | 0;
   if (!$9) {
    HEAP32[$vararg_buffer3 >> 2] = $7;
    ___syscall6(6, $vararg_buffer3 | 0) | 0;
    $$0 = 0;
   } else $$0 = $9;
  }
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _cycle($width, $ar, $n) {
 $width = $width | 0;
 $ar = $ar | 0;
 $n = $n | 0;
 var $$02 = 0, $1 = 0, $4 = 0, $6 = 0, $7 = 0, $i$01 = 0, $tmp = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 256 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $tmp = sp;
 L1 : do if (($n | 0) >= 2) {
  $1 = $ar + ($n << 2) | 0;
  HEAP32[$1 >> 2] = $tmp;
  if ($width) {
   $$02 = $width;
   $6 = $tmp;
   while (1) {
    $4 = $$02 >>> 0 > 256 ? 256 : $$02;
    _memcpy($6 | 0, HEAP32[$ar >> 2] | 0, $4 | 0) | 0;
    $i$01 = 0;
    do {
     $7 = $ar + ($i$01 << 2) | 0;
     $i$01 = $i$01 + 1 | 0;
     _memcpy(HEAP32[$7 >> 2] | 0, HEAP32[$ar + ($i$01 << 2) >> 2] | 0, $4 | 0) | 0;
     HEAP32[$7 >> 2] = (HEAP32[$7 >> 2] | 0) + $4;
    } while (($i$01 | 0) != ($n | 0));
    if (($$02 | 0) == ($4 | 0)) break L1;
    $$02 = $$02 - $4 | 0;
    $6 = HEAP32[$1 >> 2] | 0;
   }
  }
 } while (0);
 STACKTOP = sp;
 return;
}

function _setThreshold($id, $threshold) {
 $id = $id | 0;
 $threshold = $threshold | 0;
 var $0 = 0, $3 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  if ($threshold >>> 0 <= 255) if (!(_arSetLabelingThresh(HEAP32[$3 + 212 >> 2] | 0, $threshold) | 0)) {
   HEAP32[$vararg_buffer >> 2] = $threshold;
   _arLog(1, 6568, $vararg_buffer);
  }
 }
 STACKTOP = sp;
 return;
}

function _scalbn($x, $n) {
 $x = +$x;
 $n = $n | 0;
 var $$0 = 0, $1 = 0.0, $12 = 0, $15 = 0, $16 = 0, $2 = 0, $5 = 0, $8 = 0.0, $9 = 0, $y$0 = 0.0;
 if (($n | 0) > 1023) {
  $1 = $x * 8988465674311579538646525.0e283;
  $2 = $n + -1023 | 0;
  if (($2 | 0) > 1023) {
   $5 = $n + -2046 | 0;
   $$0 = ($5 | 0) > 1023 ? 1023 : $5;
   $y$0 = $1 * 8988465674311579538646525.0e283;
  } else {
   $$0 = $2;
   $y$0 = $1;
  }
 } else if (($n | 0) < -1022) {
  $8 = $x * 2.2250738585072014e-308;
  $9 = $n + 1022 | 0;
  if (($9 | 0) < -1022) {
   $12 = $n + 2044 | 0;
   $$0 = ($12 | 0) < -1022 ? -1022 : $12;
   $y$0 = $8 * 2.2250738585072014e-308;
  } else {
   $$0 = $9;
   $y$0 = $8;
  }
 } else {
  $$0 = $n;
  $y$0 = $x;
 }
 $15 = _bitshift64Shl($$0 + 1023 | 0, 0, 52) | 0;
 $16 = tempRet0;
 HEAP32[tempDoublePtr >> 2] = $15;
 HEAP32[tempDoublePtr + 4 >> 2] = $16;
 return +($y$0 * +HEAPF64[tempDoublePtr >> 3]);
}

function _wcrtomb($s, $wc, $st) {
 $s = $s | 0;
 $wc = $wc | 0;
 $st = $st | 0;
 var $$0 = 0, $45 = 0;
 do if (!$s) $$0 = 1; else {
  if ($wc >>> 0 < 128) {
   HEAP8[$s >> 0] = $wc;
   $$0 = 1;
   break;
  }
  if ($wc >>> 0 < 2048) {
   HEAP8[$s >> 0] = $wc >>> 6 | 192;
   HEAP8[$s + 1 >> 0] = $wc & 63 | 128;
   $$0 = 2;
   break;
  }
  if ($wc >>> 0 < 55296 | ($wc & -8192 | 0) == 57344) {
   HEAP8[$s >> 0] = $wc >>> 12 | 224;
   HEAP8[$s + 1 >> 0] = $wc >>> 6 & 63 | 128;
   HEAP8[$s + 2 >> 0] = $wc & 63 | 128;
   $$0 = 3;
   break;
  }
  if (($wc + -65536 | 0) >>> 0 < 1048576) {
   HEAP8[$s >> 0] = $wc >>> 18 | 240;
   HEAP8[$s + 1 >> 0] = $wc >>> 12 & 63 | 128;
   HEAP8[$s + 2 >> 0] = $wc >>> 6 & 63 | 128;
   HEAP8[$s + 3 >> 0] = $wc & 63 | 128;
   $$0 = 4;
   break;
  } else {
   $45 = ___errno_location() | 0;
   HEAP32[$45 >> 2] = 84;
   $$0 = -1;
   break;
  }
 } while (0);
 return $$0 | 0;
}

function _getThresholdMode($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $7 = 0, $thresholdMode = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $thresholdMode = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {
  STACKTOP = sp;
  return -1;
 } else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $7 = (_arGetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $thresholdMode) | 0) == 0;
  STACKTOP = sp;
  return ($7 ? HEAP32[$thresholdMode >> 2] | 0 : -1) | 0;
 }
 return 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj9EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $1 = 0, $10 = 0, $12 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
 HEAP8[$this >> 0] = 16;
 $1 = $s;
 $2 = $1;
 $3 = HEAPU8[$2 >> 0] | HEAPU8[$2 + 1 >> 0] << 8 | HEAPU8[$2 + 2 >> 0] << 16 | HEAPU8[$2 + 3 >> 0] << 24;
 $5 = $1 + 4 | 0;
 $6 = HEAPU8[$5 >> 0] | HEAPU8[$5 + 1 >> 0] << 8 | HEAPU8[$5 + 2 >> 0] << 16 | HEAPU8[$5 + 3 >> 0] << 24;
 $7 = $this + 1 | 0;
 $8 = $7;
 HEAP8[$8 >> 0] = $3;
 HEAP8[$8 + 1 >> 0] = $3 >> 8;
 HEAP8[$8 + 2 >> 0] = $3 >> 16;
 HEAP8[$8 + 3 >> 0] = $3 >> 24;
 $10 = $7 + 4 | 0;
 HEAP8[$10 >> 0] = $6;
 HEAP8[$10 + 1 >> 0] = $6 >> 8;
 HEAP8[$10 + 2 >> 0] = $6 >> 16;
 HEAP8[$10 + 3 >> 0] = $6 >> 24;
 HEAP8[$this + 9 >> 0] = 0;
 $12 = $this + 12 | 0;
 HEAP32[$12 >> 2] = 0;
 HEAP32[$12 + 4 >> 2] = 0;
 HEAP32[$12 + 8 >> 2] = 0;
 return;
}

function _getImageProcMode($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $7 = 0, $imageProcMode = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $imageProcMode = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {
  STACKTOP = sp;
  return -1;
 } else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $7 = (_arGetImageProcMode(HEAP32[$4 >> 2] | 0, $imageProcMode) | 0) == 0;
  STACKTOP = sp;
  return ($7 ? HEAP32[$imageProcMode >> 2] | 0 : -1) | 0;
 }
 return 0;
}

function __ZNSt3__16vectorI12multi_markerNS_9allocatorIS1_EEE26__swap_out_circular_bufferERNS_14__split_bufferIS1_RS3_EE($this, $__v) {
 $this = $this | 0;
 $__v = $__v | 0;
 var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $13 = 0, $14 = 0, $16 = 0, $17 = 0, $18 = 0, $3 = 0, $6 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 $1 = $this + 4 | 0;
 $3 = $__v + 4 | 0;
 $6 = (HEAP32[$1 >> 2] | 0) - $0 | 0;
 $10 = (HEAP32[$3 >> 2] | 0) + (0 - ($6 >> 3) << 3) | 0;
 HEAP32[$3 >> 2] = $10;
 _memcpy($10 | 0, $0 | 0, $6 | 0) | 0;
 $11 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = HEAP32[$3 >> 2];
 HEAP32[$3 >> 2] = $11;
 $13 = $__v + 8 | 0;
 $14 = HEAP32[$1 >> 2] | 0;
 HEAP32[$1 >> 2] = HEAP32[$13 >> 2];
 HEAP32[$13 >> 2] = $14;
 $16 = $this + 8 | 0;
 $17 = $__v + 12 | 0;
 $18 = HEAP32[$16 >> 2] | 0;
 HEAP32[$16 >> 2] = HEAP32[$17 >> 2];
 HEAP32[$17 >> 2] = $18;
 HEAP32[$__v >> 2] = HEAP32[$3 >> 2];
 return;
}

function _setPatternDetectionMode($id, $mode) {
 $id = $id | 0;
 $mode = $mode | 0;
 var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  if (!(_arSetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {
   HEAP32[$vararg_buffer >> 2] = $mode;
   _arLog(1, 6477, $vararg_buffer);
  }
 }
 STACKTOP = sp;
 return;
}

function _getLabelingMode($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $7 = 0, $labelingMode = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $labelingMode = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {
  STACKTOP = sp;
  return -1;
 } else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $7 = (_arGetLabelingMode(HEAP32[$4 >> 2] | 0, $labelingMode) | 0) == 0;
  STACKTOP = sp;
  return ($7 ? HEAP32[$labelingMode >> 2] | 0 : -1) | 0;
 }
 return 0;
}

function _arMatrixDup($dest, $source) {
 $dest = $dest | 0;
 $source = $source | 0;
 var $$0 = 0, $1 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $6 = 0, $c$02 = 0, $r$03 = 0;
 $1 = HEAP32[$dest + 4 >> 2] | 0;
 if (($1 | 0) == (HEAP32[$source + 4 >> 2] | 0)) {
  $6 = HEAP32[$dest + 8 >> 2] | 0;
  if (($6 | 0) == (HEAP32[$source + 8 >> 2] | 0)) if (($1 | 0) > 0) {
   $11 = ($6 | 0) > 0;
   $r$03 = 0;
   do {
    $12 = Math_imul($6, $r$03) | 0;
    if ($11) {
     $13 = HEAP32[$source >> 2] | 0;
     $14 = HEAP32[$dest >> 2] | 0;
     $c$02 = 0;
     do {
      $15 = $12 + $c$02 | 0;
      HEAPF64[$14 + ($15 << 3) >> 3] = +HEAPF64[$13 + ($15 << 3) >> 3];
      $c$02 = $c$02 + 1 | 0;
     } while (($c$02 | 0) < ($6 | 0));
    }
    $r$03 = $r$03 + 1 | 0;
   } while (($r$03 | 0) < ($1 | 0));
   $$0 = 0;
  } else $$0 = 0; else $$0 = -1;
 } else $$0 = -1;
 return $$0 | 0;
}

function _setThresholdMode($id, $mode) {
 $id = $id | 0;
 $mode = $mode | 0;
 var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  if (!(_arSetLabelingThreshMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {
   HEAP32[$vararg_buffer >> 2] = $mode;
   _arLog(1, 6589, $vararg_buffer);
  }
 }
 STACKTOP = sp;
 return;
}

function _getPattRatio($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $5 = 0, $8 = 0, $pattRatio = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 8 | 0;
 $pattRatio = sp;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $5 = HEAP32[$4 >> 2] | 0;
  if ($5) {
   $8 = (_arGetPattRatio($5, $pattRatio) | 0) == 0;
   STACKTOP = sp;
   return +($8 ? +HEAPF64[$pattRatio >> 3] : -1.0);
  }
 }
 STACKTOP = sp;
 return -1.0;
}

function _setImageProcMode($id, $mode) {
 $id = $id | 0;
 $mode = $mode | 0;
 var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  if (!(_arSetImageProcMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {
   HEAP32[$vararg_buffer >> 2] = $mode;
   _arLog(1, 6646, $vararg_buffer);
  }
 }
 STACKTOP = sp;
 return;
}

function _setLabelingMode($id, $mode) {
 $id = $id | 0;
 $mode = $mode | 0;
 var $0 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $0 = sp + 4 | 0;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  if (!(_arSetLabelingMode(HEAP32[$4 >> 2] | 0, $mode) | 0)) {
   HEAP32[$vararg_buffer >> 2] = $mode;
   _arLog(1, 6543, $vararg_buffer);
  }
 }
 STACKTOP = sp;
 return;
}

function _getThreshold($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $7 = 0, $threshold = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $threshold = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {
  STACKTOP = sp;
  return -1;
 } else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $7 = (_arGetLabelingThresh(HEAP32[$4 >> 2] | 0, $threshold) | 0) == 0;
  STACKTOP = sp;
  return ($7 ? HEAP32[$threshold >> 2] | 0 : -1) | 0;
 }
 return 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_119parse_cv_qualifiersEPKcS2_Rj($first, $last, $cv) {
 $first = $first | 0;
 $last = $last | 0;
 $cv = $cv | 0;
 var $$0 = 0, $$1 = 0, $$2 = 0, $1 = 0, $10 = 0, $12 = 0, $3 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0;
 HEAP32[$cv >> 2] = 0;
 if (($first | 0) == ($last | 0)) $$2 = $first; else {
  $1 = HEAP8[$first >> 0] | 0;
  if ($1 << 24 >> 24 == 114) {
   HEAP32[$cv >> 2] = 4;
   $3 = $first + 1 | 0;
   $$0 = $3;
   $5 = HEAP8[$3 >> 0] | 0;
   $7 = 4;
  } else {
   $$0 = $first;
   $5 = $1;
   $7 = 0;
  }
  if ($5 << 24 >> 24 == 86) {
   $6 = $7 | 2;
   HEAP32[$cv >> 2] = $6;
   $8 = $$0 + 1 | 0;
   $$1 = $8;
   $10 = HEAP8[$8 >> 0] | 0;
   $12 = $6;
  } else {
   $$1 = $$0;
   $10 = $5;
   $12 = $7;
  }
  if ($10 << 24 >> 24 == 75) {
   HEAP32[$cv >> 2] = $12 | 1;
   $$2 = $$1 + 1 | 0;
  } else $$2 = $$1;
 }
 return $$2 | 0;
}

function _getPatternDetectionMode($id) {
 $id = $id | 0;
 var $0 = 0, $4 = 0, $7 = 0, $mode = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $mode = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) {
  STACKTOP = sp;
  return -1;
 } else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $7 = (_arGetPatternDetectionMode(HEAP32[$4 >> 2] | 0, $mode) | 0) == 0;
  STACKTOP = sp;
  return ($7 ? HEAP32[$mode >> 2] | 0 : -1) | 0;
 }
 return 0;
}

function _strerror($e) {
 $e = $e | 0;
 var $$lcssa = 0, $9 = 0, $i$03 = 0, $i$03$lcssa = 0, $i$12 = 0, $s$0$lcssa = 0, $s$01 = 0, $s$1 = 0, label = 0;
 $i$03 = 0;
 while (1) {
  if ((HEAPU8[14592 + $i$03 >> 0] | 0) == ($e | 0)) {
   $i$03$lcssa = $i$03;
   label = 2;
   break;
  }
  $i$03 = $i$03 + 1 | 0;
  if (($i$03 | 0) == 87) {
   $i$12 = 87;
   $s$01 = 14680;
   label = 5;
   break;
  }
 }
 if ((label | 0) == 2) if (!$i$03$lcssa) $s$0$lcssa = 14680; else {
  $i$12 = $i$03$lcssa;
  $s$01 = 14680;
  label = 5;
 }
 if ((label | 0) == 5) while (1) {
  label = 0;
  $s$1 = $s$01;
  while (1) {
   $9 = $s$1 + 1 | 0;
   if (!(HEAP8[$s$1 >> 0] | 0)) {
    $$lcssa = $9;
    break;
   } else $s$1 = $9;
  }
  $i$12 = $i$12 + -1 | 0;
  if (!$i$12) {
   $s$0$lcssa = $$lcssa;
   break;
  } else {
   $s$01 = $$lcssa;
   label = 5;
  }
 }
 return $s$0$lcssa | 0;
}

function __ZNSt3__113__lower_boundIRNS_6__lessIjjEEPKjjEET0_S6_S6_RKT1_T_($__first, $__last, $__value_, $__comp) {
 $__first = $__first | 0;
 $__last = $__last | 0;
 $__value_ = $__value_ | 0;
 $__comp = $__comp | 0;
 var $$0$ph = 0, $$0$ph$lcssa = 0, $$lcssa = 0, $4 = 0, $6 = 0, $__len$0 = 0, $__len$0$lcssa7 = 0, $__len$0$ph = 0;
 $4 = HEAP32[$__value_ >> 2] | 0;
 $$0$ph = $__first;
 $__len$0$ph = $__last - $__first >> 2;
 L1 : while (1) {
  $__len$0 = $__len$0$ph;
  while (1) {
   if (!$__len$0) {
    $$0$ph$lcssa = $$0$ph;
    break L1;
   }
   $6 = ($__len$0 | 0) / 2 | 0;
   if ((HEAP32[$$0$ph + ($6 << 2) >> 2] | 0) >>> 0 < $4 >>> 0) {
    $$lcssa = $6;
    $__len$0$lcssa7 = $__len$0;
    break;
   } else $__len$0 = $6;
  }
  $$0$ph = $$0$ph + ($$lcssa + 1 << 2) | 0;
  $__len$0$ph = $__len$0$lcssa7 + -1 - $$lcssa | 0;
 }
 return $$0$ph$lcssa | 0;
}

function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EEPKS8_RKSB_($agg$result, $__lhs, $__rhs) {
 $agg$result = $agg$result | 0;
 $__lhs = $__lhs | 0;
 $__rhs = $__rhs | 0;
 var $10 = 0, $2 = 0, $3 = 0;
 HEAP32[$agg$result >> 2] = 0;
 HEAP32[$agg$result + 4 >> 2] = 0;
 HEAP32[$agg$result + 8 >> 2] = 0;
 $2 = _strlen($__lhs) | 0;
 $3 = HEAP8[$__rhs >> 0] | 0;
 $10 = ($3 & 1) == 0 ? ($3 & 255) >>> 1 : HEAP32[$__rhs + 4 >> 2] | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $__lhs, $2, $10 + $2 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, (HEAP8[$__rhs >> 0] & 1) == 0 ? $__rhs + 1 | 0 : HEAP32[$__rhs + 8 >> 2] | 0, $10) | 0;
 return;
}

function _frexp($x, $e) {
 $x = +$x;
 $e = $e | 0;
 var $$0 = 0.0, $$01 = 0.0, $0 = 0, $1 = 0, $2 = 0, $4 = 0, $7 = 0.0, $storemerge = 0;
 HEAPF64[tempDoublePtr >> 3] = $x;
 $0 = HEAP32[tempDoublePtr >> 2] | 0;
 $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 $2 = _bitshift64Lshr($0 | 0, $1 | 0, 52) | 0;
 $4 = $2 & 2047;
 switch ($4 | 0) {
 case 0:
  {
   if ($x != 0.0) {
    $7 = +_frexp($x * 18446744073709551616.0, $e);
    $$01 = $7;
    $storemerge = (HEAP32[$e >> 2] | 0) + -64 | 0;
   } else {
    $$01 = $x;
    $storemerge = 0;
   }
   HEAP32[$e >> 2] = $storemerge;
   $$0 = $$01;
   break;
  }
 case 2047:
  {
   $$0 = $x;
   break;
  }
 default:
  {
   HEAP32[$e >> 2] = $4 + -1022;
   HEAP32[tempDoublePtr >> 2] = $0;
   HEAP32[tempDoublePtr + 4 >> 2] = $1 & -2146435073 | 1071644672;
   $$0 = +HEAPF64[tempDoublePtr >> 3];
  }
 }
 return +$$0;
}

function ___fseeko_unlocked($f, $off, $whence) {
 $f = $f | 0;
 $off = $off | 0;
 $whence = $whence | 0;
 var $$0 = 0, $$01 = 0, $11 = 0, $9 = 0, label = 0;
 if (($whence | 0) == 1) $$01 = $off - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) | 0; else $$01 = $off;
 $9 = $f + 20 | 0;
 $11 = $f + 28 | 0;
 if ((HEAP32[$9 >> 2] | 0) >>> 0 > (HEAP32[$11 >> 2] | 0) >>> 0) {
  FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;
  if (!(HEAP32[$9 >> 2] | 0)) $$0 = -1; else label = 5;
 } else label = 5;
 if ((label | 0) == 5) {
  HEAP32[$f + 16 >> 2] = 0;
  HEAP32[$11 >> 2] = 0;
  HEAP32[$9 >> 2] = 0;
  if ((FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $$01, $whence) | 0) < 0) $$0 = -1; else {
   HEAP32[$f + 8 >> 2] = 0;
   HEAP32[$f + 4 >> 2] = 0;
   HEAP32[$f >> 2] = HEAP32[$f >> 2] & -17;
   $$0 = 0;
  }
 }
 return $$0 | 0;
}

function __ZNSt3__1plIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEENS_12basic_stringIT_T0_T1_EERKSB_PKS8_($agg$result, $__lhs, $__rhs) {
 $agg$result = $agg$result | 0;
 $__lhs = $__lhs | 0;
 $__rhs = $__rhs | 0;
 var $10 = 0, $2 = 0, $4 = 0, $9 = 0;
 HEAP32[$agg$result >> 2] = 0;
 HEAP32[$agg$result + 4 >> 2] = 0;
 HEAP32[$agg$result + 8 >> 2] = 0;
 $2 = HEAP8[$__lhs >> 0] | 0;
 $4 = ($2 & 1) == 0;
 $9 = $4 ? ($2 & 255) >>> 1 : HEAP32[$__lhs + 4 >> 2] | 0;
 $10 = _strlen($__rhs) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($agg$result, $4 ? $__lhs + 1 | 0 : HEAP32[$__lhs + 8 >> 2] | 0, $9, $9 + $10 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($agg$result, $__rhs, $10) | 0;
 return;
}

function _icpGetU_from_X_by_MatX2U($u, $matX2U, $coord3d) {
 $u = $u | 0;
 $matX2U = $matX2U | 0;
 $coord3d = $coord3d | 0;
 var $$0 = 0, $0 = 0.0, $18 = 0.0, $2 = 0.0, $33 = 0.0, $4 = 0.0;
 $0 = +HEAPF64[$coord3d >> 3];
 $2 = +HEAPF64[$coord3d + 8 >> 3];
 $4 = +HEAPF64[$coord3d + 16 >> 3];
 $18 = +HEAPF64[$matX2U + 88 >> 3] + ($0 * +HEAPF64[$matX2U + 64 >> 3] + $2 * +HEAPF64[$matX2U + 72 >> 3] + $4 * +HEAPF64[$matX2U + 80 >> 3]);
 if ($18 == 0.0) $$0 = -1; else {
  $33 = +HEAPF64[$matX2U + 56 >> 3] + ($0 * +HEAPF64[$matX2U + 32 >> 3] + $2 * +HEAPF64[$matX2U + 40 >> 3] + $4 * +HEAPF64[$matX2U + 48 >> 3]);
  HEAPF64[$u >> 3] = (+HEAPF64[$matX2U + 24 >> 3] + ($0 * +HEAPF64[$matX2U >> 3] + $2 * +HEAPF64[$matX2U + 8 >> 3] + $4 * +HEAPF64[$matX2U + 16 >> 3])) / $18;
  HEAPF64[$u + 8 >> 3] = $33 / $18;
  $$0 = 0;
 }
 return $$0 | 0;
}

function __ZNSt3__16vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEEC2EjRKS3_RKS5_($this, $__x, $__a) {
 $this = $this | 0;
 $__x = $__x | 0;
 $__a = $__a | 0;
 var $0 = 0, $2 = 0, $5 = 0;
 HEAP32[$this >> 2] = 0;
 $0 = $this + 4 | 0;
 HEAP32[$0 >> 2] = 0;
 $2 = HEAP32[$__a >> 2] | 0;
 HEAP32[$this + 8 >> 2] = 0;
 HEAP32[$this + 12 >> 2] = $2;
 $5 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($2, 24) | 0;
 HEAP32[$0 >> 2] = $5;
 HEAP32[$this >> 2] = $5;
 HEAP32[$this + 8 >> 2] = $5 + 24;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5, $__x);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($5 + 12 | 0, $__x + 12 | 0);
 HEAP32[$0 >> 2] = (HEAP32[$0 >> 2] | 0) + 24;
 return;
}

function _getMatrixCodeType($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $4 = 0, $matrixType = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $matrixType = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  _arGetMatrixCodeType(HEAP32[$4 >> 2] | 0, $matrixType) | 0;
  $$0 = HEAP32[$matrixType >> 2] | 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_112parse_numberEPKcS2_($first, $last) {
 $first = $first | 0;
 $last = $last | 0;
 var $$0 = 0, $$1 = 0, $$first = 0, $5 = 0, $t$0$pn = 0;
 L1 : do if (($first | 0) == ($last | 0)) $$1 = $first; else {
  $$first = (HEAP8[$first >> 0] | 0) == 110 ? $first + 1 | 0 : $first;
  if (($$first | 0) == ($last | 0)) $$1 = $first; else {
   $5 = HEAP8[$$first >> 0] | 0;
   if ($5 << 24 >> 24 == 48) {
    $$1 = $$first + 1 | 0;
    break;
   }
   if (($5 + -49 & 255) < 9) {
    $t$0$pn = $$first;
    while (1) {
     $$0 = $t$0$pn + 1 | 0;
     if (($$0 | 0) == ($last | 0)) {
      $$1 = $last;
      break L1;
     }
     if (((HEAP8[$$0 >> 0] | 0) + -48 | 0) >>> 0 < 10) $t$0$pn = $$0; else {
      $$1 = $$0;
      break;
     }
    }
   } else $$1 = $first;
  }
 } while (0);
 return $$1 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $this + 8 | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 if (($3 | 0) != ($1 | 0)) {
  $6 = $3;
  do {
   $5 = $6 + -16 | 0;
   HEAP32[$2 >> 2] = $5;
   __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5);
   $6 = HEAP32[$2 >> 2] | 0;
  } while (($6 | 0) != ($1 | 0));
 }
 $9 = HEAP32[$this >> 2] | 0;
 if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);
 return;
}

function __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 if ($0) {
  $2 = $this + 4 | 0;
  $3 = HEAP32[$2 >> 2] | 0;
  if (($3 | 0) != ($0 | 0)) {
   $6 = $3;
   do {
    $5 = $6 + -16 | 0;
    HEAP32[$2 >> 2] = $5;
    __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($5);
    $6 = HEAP32[$2 >> 2] | 0;
   } while (($6 | 0) != ($0 | 0));
  }
  $9 = HEAP32[$this >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);
 }
 return;
}

function _getDebugMode($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $4 = 0, $enable = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp + 4 | 0;
 $enable = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  _arGetDebugMode(HEAP32[$4 >> 2] | 0, $enable) | 0;
  $$0 = HEAP32[$enable >> 2] | 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _realloc($oldmem, $bytes) {
 $oldmem = $oldmem | 0;
 $bytes = $bytes | 0;
 var $12 = 0, $15 = 0, $20 = 0, $3 = 0, $9 = 0, $mem$0 = 0;
 if (!$oldmem) {
  $mem$0 = _malloc($bytes) | 0;
  return $mem$0 | 0;
 }
 if ($bytes >>> 0 > 4294967231) {
  $3 = ___errno_location() | 0;
  HEAP32[$3 >> 2] = 12;
  $mem$0 = 0;
  return $mem$0 | 0;
 }
 $9 = _try_realloc_chunk($oldmem + -8 | 0, $bytes >>> 0 < 11 ? 16 : $bytes + 11 & -8) | 0;
 if ($9) {
  $mem$0 = $9 + 8 | 0;
  return $mem$0 | 0;
 }
 $12 = _malloc($bytes) | 0;
 if (!$12) {
  $mem$0 = 0;
  return $mem$0 | 0;
 }
 $15 = HEAP32[$oldmem + -4 >> 2] | 0;
 $20 = ($15 & -8) - (($15 & 3 | 0) == 0 ? 8 : 4) | 0;
 _memcpy($12 | 0, $oldmem | 0, ($20 >>> 0 < $bytes >>> 0 ? $20 : $bytes) | 0) | 0;
 _free($oldmem);
 $mem$0 = $12;
 return $mem$0 | 0;
}

function _arSetDebugMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0, $11 = 0, $4 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 do if (!$handle) $$0 = -1; else if ((HEAP32[$handle >> 2] | 0) == ($mode | 0)) $$0 = 0; else {
  HEAP32[$handle >> 2] = $mode;
  if (!$mode) {
   $4 = $handle + 4834148 | 0;
   _free(HEAP32[$4 >> 2] | 0);
   HEAP32[$4 >> 2] = 0;
   $$0 = 0;
   break;
  }
  $11 = _malloc(Math_imul(HEAP32[$handle + 40 >> 2] | 0, HEAP32[$handle + 36 >> 2] | 0) | 0) | 0;
  HEAP32[$handle + 4834148 >> 2] = $11;
  if (!$11) {
   _arLog(3, 5471, $vararg_buffer);
   _exit(1);
  } else $$0 = 0;
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _vasprintf($s, $fmt, $ap) {
 $s = $s | 0;
 $fmt = $fmt | 0;
 $ap = $ap | 0;
 var $$0 = 0, $0 = 0, $10 = 0, $2 = 0, $5 = 0, $9 = 0, $ap2 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ap2 = sp;
 $0 = _malloc(240) | 0;
 do if (!$0) $$0 = -1; else {
  HEAP32[$ap2 >> 2] = HEAP32[$ap >> 2];
  $2 = _vsnprintf($0, 240, $fmt, $ap2) | 0;
  if ($2 >>> 0 < 240) {
   $5 = _realloc($0, $2 + 1 | 0) | 0;
   HEAP32[$s >> 2] = ($5 | 0) != 0 ? $5 : $0;
   $$0 = $2;
   break;
  }
  _free($0);
  if (($2 | 0) < 0) $$0 = -1; else {
   $9 = $2 + 1 | 0;
   $10 = _malloc($9) | 0;
   HEAP32[$s >> 2] = $10;
   if (!$10) $$0 = -1; else $$0 = _vsnprintf($10, $9, $fmt, $ap) | 0;
  }
 } while (0);
 STACKTOP = sp;
 return $$0 | 0;
}

function _icpCreateHandle($matXc2U) {
 $matXc2U = $matXc2U | 0;
 var $$0 = 0, $0 = 0, $j$04 = 0;
 $0 = _malloc(136) | 0;
 if (!$0) $$0 = 0; else {
  $j$04 = 0;
  do {
   HEAPF64[$0 + ($j$04 << 5) >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) >> 3];
   HEAPF64[$0 + ($j$04 << 5) + 8 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 8 >> 3];
   HEAPF64[$0 + ($j$04 << 5) + 16 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 16 >> 3];
   HEAPF64[$0 + ($j$04 << 5) + 24 >> 3] = +HEAPF64[$matXc2U + ($j$04 << 5) + 24 >> 3];
   $j$04 = $j$04 + 1 | 0;
  } while (($j$04 | 0) != 3);
  HEAP32[$0 + 96 >> 2] = 10;
  HEAPF64[$0 + 104 >> 3] = .10000000149011612;
  HEAPF64[$0 + 112 >> 3] = .9900000095367432;
  HEAPF64[$0 + 120 >> 3] = 4.0;
  HEAPF64[$0 + 128 >> 3] = .5;
  $$0 = $0;
 }
 return $$0 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $this + 8 | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 if (($3 | 0) != ($1 | 0)) {
  $6 = $3;
  do {
   $5 = $6 + -16 | 0;
   HEAP32[$2 >> 2] = $5;
   __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5);
   $6 = HEAP32[$2 >> 2] | 0;
  } while (($6 | 0) != ($1 | 0));
 }
 $9 = HEAP32[$this >> 2] | 0;
 if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);
 return;
}

function __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 if ($0) {
  $2 = $this + 4 | 0;
  $3 = HEAP32[$2 >> 2] | 0;
  if (($3 | 0) != ($0 | 0)) {
   $6 = $3;
   do {
    $5 = $6 + -16 | 0;
    HEAP32[$2 >> 2] = $5;
    __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($5);
    $6 = HEAP32[$2 >> 2] | 0;
   } while (($6 | 0) != ($0 | 0));
  }
  $9 = HEAP32[$this >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);
 }
 return;
}

function __ZNK10__cxxabiv122__base_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $dst_ptr = $dst_ptr | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $1 >> 8;
 if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0;
 $8 = HEAP32[$this >> 2] | 0;
 FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 20 >> 2] & 3]($8, $info, $dst_ptr, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp);
 return;
}

function _setProjectionNearPlane($id, $projectionNearPlane) {
 $id = $id | 0;
 $projectionNearPlane = +$projectionNearPlane;
 var $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0;
  HEAPF64[$4 >> 3] = $projectionNearPlane;
 }
 STACKTOP = sp;
 return;
}

function _detectMarker($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = HEAP32[522] | 0; else {
  $4 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $$0 = _arDetectMarker(HEAP32[$4 + 212 >> 2] | 0, HEAP32[$4 + 196 >> 2] | 0) | 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $adjustedPtr = $adjustedPtr | 0;
 $path_below = $path_below | 0;
 var $0 = 0, $1 = 0, $6 = 0, $9 = 0;
 $0 = $info + 16 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 do if (!$1) {
  HEAP32[$0 >> 2] = $adjustedPtr;
  HEAP32[$info + 24 >> 2] = $path_below;
  HEAP32[$info + 36 >> 2] = 1;
 } else {
  if (($1 | 0) != ($adjustedPtr | 0)) {
   $9 = $info + 36 | 0;
   HEAP32[$9 >> 2] = (HEAP32[$9 >> 2] | 0) + 1;
   HEAP32[$info + 24 >> 2] = 2;
   HEAP8[$info + 54 >> 0] = 1;
   break;
  }
  $6 = $info + 24 | 0;
  if ((HEAP32[$6 >> 2] | 0) == 2) HEAP32[$6 >> 2] = $path_below;
 } while (0);
 return;
}

function _setProjectionFarPlane($id, $projectionFarPlane) {
 $id = $id | 0;
 $projectionFarPlane = +$projectionFarPlane;
 var $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0;
  HEAPF64[$4 >> 3] = $projectionFarPlane;
 }
 STACKTOP = sp;
 return;
}

function _arParamObserv2IdealLTf($paramLTf, $ox, $oy, $ix, $iy) {
 $paramLTf = $paramLTf | 0;
 $ox = +$ox;
 $oy = +$oy;
 $ix = $ix | 0;
 $iy = $iy | 0;
 var $$0 = 0, $12 = 0, $19 = 0, $22 = 0, $4 = 0, $9 = 0;
 $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ox + .5) | 0;
 $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($oy + .5) | 0;
 if (($4 | 0) < 0) $$0 = -1; else {
  $12 = HEAP32[$paramLTf + 8 >> 2] | 0;
  if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) {
   $19 = HEAP32[$paramLTf + 4 >> 2] | 0;
   $22 = (Math_imul($12, $9) | 0) + $4 << 1;
   HEAP32[$ix >> 2] = HEAP32[$19 + ($22 << 2) >> 2];
   HEAP32[$iy >> 2] = HEAP32[$19 + (($22 | 1) << 2) >> 2];
   $$0 = 0;
  } else $$0 = -1;
 }
 return $$0 | 0;
}

function _arParamIdeal2ObservLTf($paramLTf, $ix, $iy, $ox, $oy) {
 $paramLTf = $paramLTf | 0;
 $ix = +$ix;
 $iy = +$iy;
 $ox = $ox | 0;
 $oy = $oy | 0;
 var $$0 = 0, $12 = 0, $18 = 0, $21 = 0, $4 = 0, $9 = 0;
 $4 = (HEAP32[$paramLTf + 16 >> 2] | 0) + ~~($ix + .5) | 0;
 $9 = (HEAP32[$paramLTf + 20 >> 2] | 0) + ~~($iy + .5) | 0;
 if (($4 | 0) < 0) $$0 = -1; else {
  $12 = HEAP32[$paramLTf + 8 >> 2] | 0;
  if (($9 | 0) < 0 | ($4 | 0) >= ($12 | 0)) $$0 = -1; else if (($9 | 0) < (HEAP32[$paramLTf + 12 >> 2] | 0)) {
   $18 = HEAP32[$paramLTf >> 2] | 0;
   $21 = (Math_imul($12, $9) | 0) + $4 << 1;
   HEAP32[$ox >> 2] = HEAP32[$18 + ($21 << 2) >> 2];
   HEAP32[$oy >> 2] = HEAP32[$18 + (($21 | 1) << 2) >> 2];
   $$0 = 0;
  } else $$0 = -1;
 }
 return $$0 | 0;
}

function _arUtilMatMul($s1, $s2, $d) {
 $s1 = $s1 | 0;
 $s2 = $s2 | 0;
 $d = $d | 0;
 var $0 = 0, $1 = 0, $2 = 0, $21 = 0, $i$02 = 0, $j$03 = 0;
 $j$03 = 0;
 do {
  $0 = $s1 + ($j$03 << 5) | 0;
  $1 = $s1 + ($j$03 << 5) + 8 | 0;
  $2 = $s1 + ($j$03 << 5) + 16 | 0;
  $i$02 = 0;
  do {
   HEAPF64[$d + ($j$03 << 5) + ($i$02 << 3) >> 3] = +HEAPF64[$0 >> 3] * +HEAPF64[$s2 + ($i$02 << 3) >> 3] + +HEAPF64[$1 >> 3] * +HEAPF64[$s2 + 32 + ($i$02 << 3) >> 3] + +HEAPF64[$2 >> 3] * +HEAPF64[$s2 + 64 + ($i$02 << 3) >> 3];
   $i$02 = $i$02 + 1 | 0;
  } while (($i$02 | 0) != 4);
  $21 = $d + ($j$03 << 5) + 24 | 0;
  HEAPF64[$21 >> 3] = +HEAPF64[$s1 + ($j$03 << 5) + 24 >> 3] + +HEAPF64[$21 >> 3];
  $j$03 = $j$03 + 1 | 0;
 } while (($j$03 | 0) != 3);
 return 0;
}

function _getMultiMarkerCount($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $3 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1; else {
  $3 = __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0;
  $$0 = (HEAP32[$3 + 252 >> 2] | 0) - (HEAP32[$3 + 248 >> 2] | 0) >> 3;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function _getMarkerNum($id) {
 $id = $id | 0;
 var $$0$in = 0, $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0$in = 2088; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $$0$in = (HEAP32[$4 >> 2] | 0) + 44 | 0;
 }
 STACKTOP = sp;
 return HEAP32[$$0$in >> 2] | 0;
}

function _getProcessingImage($id) {
 $id = $id | 0;
 var $$0 = 0, $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = 0; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  $$0 = HEAP32[(HEAP32[$4 >> 2] | 0) + 4834148 >> 2] | 0;
 }
 STACKTOP = sp;
 return $$0 | 0;
}

function ___fflush_unlocked($f) {
 $f = $f | 0;
 var $$0 = 0, $0 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $9 = 0, label = 0;
 $0 = $f + 20 | 0;
 $2 = $f + 28 | 0;
 if ((HEAP32[$0 >> 2] | 0) >>> 0 > (HEAP32[$2 >> 2] | 0) >>> 0) {
  FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;
  if (!(HEAP32[$0 >> 2] | 0)) $$0 = -1; else label = 3;
 } else label = 3;
 if ((label | 0) == 3) {
  $9 = $f + 4 | 0;
  $10 = HEAP32[$9 >> 2] | 0;
  $11 = $f + 8 | 0;
  $12 = HEAP32[$11 >> 2] | 0;
  if ($10 >>> 0 < $12 >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, $10 - $12 | 0, 1) | 0;
  HEAP32[$f + 16 >> 2] = 0;
  HEAP32[$2 >> 2] = 0;
  HEAP32[$0 >> 2] = 0;
  HEAP32[$11 >> 2] = 0;
  HEAP32[$9 >> 2] = 0;
  $$0 = 0;
 }
 return $$0 | 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, $7$0 = 0, $7$1 = 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;
 $7$0 = $2$0 ^ $1$0;
 $7$1 = $2$1 ^ $1$1;
 return _i64Subtract((___udivmoddi4($4$0, $4$1, _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0, tempRet0, 0) | 0) ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0;
}

function _setMatrixCodeType($id, $type) {
 $id = $id | 0;
 $type = $type | 0;
 var $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0) {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 212 | 0;
  _arSetMatrixCodeType(HEAP32[$4 >> 2] | 0, $type) | 0;
 }
 STACKTOP = sp;
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcjj($this, $__s, $__sz, $__reserve) {
 $this = $this | 0;
 $__s = $__s | 0;
 $__sz = $__sz | 0;
 $__reserve = $__reserve | 0;
 var $6 = 0, $7 = 0, $__p$0 = 0;
 if ($__reserve >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);
 if ($__reserve >>> 0 < 11) {
  HEAP8[$this >> 0] = $__sz << 1;
  $__p$0 = $this + 1 | 0;
 } else {
  $6 = $__reserve + 16 & -16;
  $7 = _malloc($6) | 0;
  HEAP32[$this + 8 >> 2] = $7;
  HEAP32[$this >> 2] = $6 | 1;
  HEAP32[$this + 4 >> 2] = $__sz;
  $__p$0 = $7;
 }
 _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;
 HEAP8[$__p$0 + $__sz >> 0] = 0;
 return;
}

function __ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $dst_ptr = $dst_ptr | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $4 = 0;
 if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below); else {
  $4 = HEAP32[$this + 8 >> 2] | 0;
  FUNCTION_TABLE_viiiiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 20 >> 2] & 3]($4, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp);
 }
 return;
}

function _strtok($s, $sep) {
 $s = $s | 0;
 $sep = $sep | 0;
 var $$0 = 0, $$01 = 0, $$sum = 0, $1 = 0, $3 = 0, $4 = 0, $8 = 0, label = 0;
 if (!$s) {
  $1 = HEAP32[699] | 0;
  if (!$1) $$0 = 0; else {
   $$01 = $1;
   label = 3;
  }
 } else {
  $$01 = $s;
  label = 3;
 }
 do if ((label | 0) == 3) {
  $3 = _strspn($$01, $sep) | 0;
  $4 = $$01 + $3 | 0;
  if (!(HEAP8[$4 >> 0] | 0)) {
   HEAP32[699] = 0;
   $$0 = 0;
   break;
  }
  $$sum = (_strcspn($4, $sep) | 0) + $3 | 0;
  $8 = $$01 + $$sum | 0;
  HEAP32[699] = $8;
  if (!(HEAP8[$8 >> 0] | 0)) {
   HEAP32[699] = 0;
   $$0 = $4;
   break;
  } else {
   HEAP32[699] = $$01 + ($$sum + 1);
   HEAP8[$8 >> 0] = 0;
   $$0 = $4;
   break;
  }
 } while (0);
 return $$0 | 0;
}

function __ZNK10__cxxabiv122__base_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib($this, $info, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $1 >> 8;
 if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$current_ptr >> 2] | 0) + $2 >> 2] | 0;
 $8 = HEAP32[$this >> 2] | 0;
 FUNCTION_TABLE_viiiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 24 >> 2] & 3]($8, $info, $current_ptr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2, $use_strcmp);
 return;
}

function _getProjectionNearPlane($id) {
 $id = $id | 0;
 var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 232 | 0;
  $$0 = +HEAPF64[$4 >> 3];
 }
 STACKTOP = sp;
 return +$$0;
}

function _getProjectionFarPlane($id) {
 $id = $id | 0;
 var $$0 = 0.0, $0 = 0, $4 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 HEAP32[$0 >> 2] = $id;
 if (!(__ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE4findIiEENS_15__hash_iteratorIPNS_11__hash_nodeIS3_PvEEEERKT_(2044, $0) | 0)) $$0 = -1.0; else {
  $4 = (__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEEixERS8_(2044, $0) | 0) + 240 | 0;
  $$0 = +HEAPF64[$4 >> 3];
 }
 STACKTOP = sp;
 return +$$0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pair9move_fullEv($agg$result, $this) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 var $0 = 0, $1 = 0, $13 = 0, $3 = 0;
 $0 = $this + 12 | 0;
 $1 = HEAP8[$0 >> 0] | 0;
 $3 = ($1 & 1) == 0;
 $13 = __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $3 ? $0 + 1 | 0 : HEAP32[$this + 20 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$this + 16 >> 2] | 0) | 0;
 HEAP32[$agg$result >> 2] = HEAP32[$13 >> 2];
 HEAP32[$agg$result + 4 >> 2] = HEAP32[$13 + 4 >> 2];
 HEAP32[$agg$result + 8 >> 2] = HEAP32[$13 + 8 >> 2];
 HEAP32[$13 >> 2] = 0;
 HEAP32[$13 + 4 >> 2] = 0;
 HEAP32[$13 + 8 >> 2] = 0;
 return;
}

function _arImageProcLumaHist($ipi, $dataPtr) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 var $$0 = 0, $13 = 0, $5 = 0, $8 = 0, $9 = 0, $p$03 = 0;
 if (($ipi | 0) != 0 & ($dataPtr | 0) != 0) if ((_arImageProcLuma($ipi, $dataPtr) | 0) < 0) $$0 = -1; else {
  _memset($ipi + 16 | 0, 0, 1024) | 0;
  $5 = HEAP32[$ipi >> 2] | 0;
  $8 = Math_imul(HEAP32[$ipi + 12 >> 2] | 0, HEAP32[$ipi + 8 >> 2] | 0) | 0;
  $9 = $5 + $8 | 0;
  if (($8 | 0) > 0) {
   $p$03 = $5;
   do {
    $13 = $ipi + 16 + ((HEAPU8[$p$03 >> 0] | 0) << 2) | 0;
    HEAP32[$13 >> 2] = (HEAP32[$13 >> 2] | 0) + 1;
    $p$03 = $p$03 + 1 | 0;
   } while ($p$03 >>> 0 < $9 >>> 0);
   $$0 = 0;
  } else $$0 = 0;
 } else $$0 = -1;
 return $$0 | 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) 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];
   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 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE5eraseEjj($this) {
 $this = $this | 0;
 var $$pre1 = 0, $0 = 0, $10 = 0, $11 = 0, $14 = 0, $16 = 0;
 $0 = HEAP8[$this >> 0] | 0;
 if (!($0 & 1)) {
  $10 = ($0 & 255) >>> 1;
  $14 = $this + 1 | 0;
 } else {
  $10 = HEAP32[$this + 4 >> 2] | 0;
  $14 = HEAP32[$this + 8 >> 2] | 0;
 }
 $11 = ($10 | 0) != 0 & 1;
 $$pre1 = $10 - $11 | 0;
 if (($10 | 0) == ($11 | 0)) $16 = $0; else {
  _memmove($14 | 0, $14 + $11 | 0, $$pre1 | 0) | 0;
  $16 = HEAP8[$this >> 0] | 0;
 }
 if (!($16 & 1)) HEAP8[$this >> 0] = $$pre1 << 1; else HEAP32[$this + 4 >> 2] = $$pre1;
 HEAP8[$14 + $$pre1 >> 0] = 0;
 return;
}

function ___stdio_seek($f, $off, $whence) {
 $f = $f | 0;
 $off = $off | 0;
 $whence = $whence | 0;
 var $5 = 0, $ret = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 32 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 $ret = sp + 20 | 0;
 HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];
 HEAP32[$vararg_buffer + 4 >> 2] = 0;
 HEAP32[$vararg_buffer + 8 >> 2] = $off;
 HEAP32[$vararg_buffer + 12 >> 2] = $ret;
 HEAP32[$vararg_buffer + 16 >> 2] = $whence;
 if ((___syscall_ret(___syscall140(140, $vararg_buffer | 0) | 0) | 0) < 0) {
  HEAP32[$ret >> 2] = -1;
  $5 = -1;
 } else $5 = HEAP32[$ret >> 2] | 0;
 STACKTOP = sp;
 return $5 | 0;
}

function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $1 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $this + 8 | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 if (($3 | 0) != ($1 | 0)) {
  $6 = $3;
  do {
   $5 = $6 + -24 | 0;
   HEAP32[$2 >> 2] = $5;
   __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
   $6 = HEAP32[$2 >> 2] | 0;
  } while (($6 | 0) != ($1 | 0));
 }
 $9 = HEAP32[$this >> 2] | 0;
 if ($9) __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[HEAP32[$this + 16 >> 2] >> 2] | 0, $9, (HEAP32[$this + 12 >> 2] | 0) - $9 | 0);
 return;
}

function __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this) {
 $this = $this | 0;
 var $0 = 0, $2 = 0, $3 = 0, $5 = 0, $6 = 0, $9 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 if ($0) {
  $2 = $this + 4 | 0;
  $3 = HEAP32[$2 >> 2] | 0;
  if (($3 | 0) != ($0 | 0)) {
   $6 = $3;
   do {
    $5 = $6 + -24 | 0;
    HEAP32[$2 >> 2] = $5;
    __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($5);
    $6 = HEAP32[$2 >> 2] | 0;
   } while (($6 | 0) != ($0 | 0));
  }
  $9 = HEAP32[$this >> 2] | 0;
  __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj(HEAP32[$this + 12 >> 2] | 0, $9, (HEAP32[$this + 8 >> 2] | 0) - $9 | 0);
 }
 return;
}

function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 $__k = $__k | 0;
 var $1 = 0, $11 = 0, $8 = 0;
 $1 = __Znwj(408) | 0;
 HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2];
 _memset($1 + 16 | 0, 0, 392) | 0;
 HEAPF64[$1 + 248 >> 3] = .0001;
 HEAPF64[$1 + 256 >> 3] = 1.0e3;
 $8 = $1 + 264 | 0;
 HEAP32[$8 >> 2] = 0;
 HEAP32[$8 + 4 >> 2] = 0;
 HEAP32[$8 + 8 >> 2] = 0;
 HEAP32[$8 + 12 >> 2] = 0;
 HEAP32[$agg$result >> 2] = $1;
 $11 = $agg$result + 4 | 0;
 HEAP32[$11 >> 2] = $this + 8;
 HEAP32[$11 + 4 >> 2] = 257;
 return;
}

function _arVecHousehold($x) {
 $x = $x | 0;
 var $1 = 0.0, $10 = 0.0, $12 = 0, $14 = 0, $3 = 0, $4 = 0.0, $7 = 0.0, $i$01 = 0, $s$0 = 0.0, $s$1 = 0.0;
 $1 = +Math_sqrt(+(+_arVecInnerproduct($x, $x)));
 if ($1 != 0.0) {
  $3 = HEAP32[$x >> 2] | 0;
  $4 = +HEAPF64[$3 >> 3];
  $s$0 = $4 < 0.0 ? -$1 : $1;
  $7 = $4 + $s$0;
  HEAPF64[$3 >> 3] = $7;
  $10 = 1.0 / +Math_sqrt(+($7 * $s$0));
  $12 = HEAP32[$x + 4 >> 2] | 0;
  if (($12 | 0) > 0) {
   $i$01 = 0;
   do {
    $14 = $3 + ($i$01 << 3) | 0;
    HEAPF64[$14 >> 3] = $10 * +HEAPF64[$14 >> 3];
    $i$01 = $i$01 + 1 | 0;
   } while (($i$01 | 0) < ($12 | 0));
   $s$1 = $s$0;
  } else $s$1 = $s$0;
 } else $s$1 = $1;
 return +-$s$1;
}

function __ZNSt3__114__split_bufferINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEERNS5_IS9_Lj4096EEEEC2EjjSB_($this, $__cap, $__start, $__a) {
 $this = $this | 0;
 $__cap = $__cap | 0;
 $__start = $__start | 0;
 $__a = $__a | 0;
 var $6 = 0, $7 = 0;
 HEAP32[$this + 12 >> 2] = 0;
 HEAP32[$this + 16 >> 2] = $__a;
 if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0;
 HEAP32[$this >> 2] = $6;
 $7 = $6 + ($__start << 4) | 0;
 HEAP32[$this + 8 >> 2] = $7;
 HEAP32[$this + 4 >> 2] = $7;
 HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4);
 return;
}

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) {
  value = value & 255;
  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)) {
    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 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $__s, $__sz) {
 $this = $this | 0;
 $__s = $__s | 0;
 $__sz = $__sz | 0;
 var $6 = 0, $7 = 0, $__p$0 = 0;
 if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);
 if ($__sz >>> 0 < 11) {
  HEAP8[$this >> 0] = $__sz << 1;
  $__p$0 = $this + 1 | 0;
 } else {
  $6 = $__sz + 16 & -16;
  $7 = _malloc($6) | 0;
  HEAP32[$this + 8 >> 2] = $7;
  HEAP32[$this >> 2] = $6 | 1;
  HEAP32[$this + 4 >> 2] = $__sz;
  $__p$0 = $7;
 }
 _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;
 HEAP8[$__p$0 + $__sz >> 0] = 0;
 return;
}

function __ZNK10__cxxabiv122__base_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $adjustedPtr = $adjustedPtr | 0;
 $path_below = $path_below | 0;
 var $1 = 0, $2 = 0, $8 = 0, $offset_to_base$0 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $1 >> 8;
 if (!($1 & 1)) $offset_to_base$0 = $2; else $offset_to_base$0 = HEAP32[(HEAP32[$adjustedPtr >> 2] | 0) + $2 >> 2] | 0;
 $8 = HEAP32[$this >> 2] | 0;
 FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$8 >> 2] | 0) + 28 >> 2] & 3]($8, $info, $adjustedPtr + $offset_to_base$0 | 0, ($1 & 2 | 0) != 0 ? $path_below : 2);
 return;
}

function __ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E($fn, $args, $args1) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = $args1 | 0;
 var $0 = 0, $1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args1);
 $1 = FUNCTION_TABLE_iii[$fn & 15]($args, $0) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0);
 STACKTOP = sp;
 return $1 | 0;
}

function ___toread($f) {
 $f = $f | 0;
 var $$0 = 0, $0 = 0, $15 = 0, $2 = 0, $21 = 0, $6 = 0, $8 = 0;
 $0 = $f + 74 | 0;
 $2 = HEAP8[$0 >> 0] | 0;
 HEAP8[$0 >> 0] = $2 + 255 | $2;
 $6 = $f + 20 | 0;
 $8 = $f + 44 | 0;
 if ((HEAP32[$6 >> 2] | 0) >>> 0 > (HEAP32[$8 >> 2] | 0) >>> 0) FUNCTION_TABLE_iiii[HEAP32[$f + 36 >> 2] & 15]($f, 0, 0) | 0;
 HEAP32[$f + 16 >> 2] = 0;
 HEAP32[$f + 28 >> 2] = 0;
 HEAP32[$6 >> 2] = 0;
 $15 = HEAP32[$f >> 2] | 0;
 if (!($15 & 20)) {
  $21 = HEAP32[$8 >> 2] | 0;
  HEAP32[$f + 8 >> 2] = $21;
  HEAP32[$f + 4 >> 2] = $21;
  $$0 = 0;
 } else if (!($15 & 4)) $$0 = -1; else {
  HEAP32[$f >> 2] = $15 | 32;
  $$0 = -1;
 }
 return $$0 | 0;
}

function _fclose($f) {
 $f = $f | 0;
 var $$pre = 0, $12 = 0, $18 = 0, $22 = 0, $24 = 0, $5 = 0, $7 = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {}
 $5 = (HEAP32[$f >> 2] & 1 | 0) != 0;
 if (!$5) {
  ___lock(2416);
  $7 = HEAP32[$f + 52 >> 2] | 0;
  $$pre = $f + 56 | 0;
  if ($7) HEAP32[$7 + 56 >> 2] = HEAP32[$$pre >> 2];
  $12 = HEAP32[$$pre >> 2] | 0;
  if ($12) HEAP32[$12 + 52 >> 2] = $7;
  if ((HEAP32[603] | 0) == ($f | 0)) HEAP32[603] = $12;
  ___unlock(2416);
 }
 $18 = _fflush($f) | 0;
 $22 = FUNCTION_TABLE_ii[HEAP32[$f + 12 >> 2] & 31]($f) | 0 | $18;
 $24 = HEAP32[$f + 92 >> 2] | 0;
 if ($24) _free($24);
 if (!$5) _free($f);
 return $22 | 0;
}

function __ZNSt3__114__split_bufferINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEERNS5_IS7_Lj4096EEEEC2EjjS9_($this, $__cap, $__start, $__a) {
 $this = $this | 0;
 $__cap = $__cap | 0;
 $__start = $__start | 0;
 $__a = $__a | 0;
 var $6 = 0, $7 = 0;
 HEAP32[$this + 12 >> 2] = 0;
 HEAP32[$this + 16 >> 2] = $__a;
 if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap << 4) | 0;
 HEAP32[$this >> 2] = $6;
 $7 = $6 + ($__start << 4) | 0;
 HEAP32[$this + 8 >> 2] = $7;
 HEAP32[$this + 4 >> 2] = $7;
 HEAP32[$this + 12 >> 2] = $6 + ($__cap << 4);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($this, $__s, $__sz) {
 $this = $this | 0;
 $__s = $__s | 0;
 $__sz = $__sz | 0;
 var $6 = 0, $7 = 0, $__p$0 = 0;
 if ($__sz >>> 0 > 4294967279) __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this);
 if ($__sz >>> 0 < 11) {
  HEAP8[$this >> 0] = $__sz << 1;
  $__p$0 = $this + 1 | 0;
 } else {
  $6 = $__sz + 16 & -16;
  $7 = __Znwj($6) | 0;
  HEAP32[$this + 8 >> 2] = $7;
  HEAP32[$this >> 2] = $6 | 1;
  HEAP32[$this + 4 >> 2] = $__sz;
  $__p$0 = $7;
 }
 _memcpy($__p$0 | 0, $__s | 0, $__sz | 0) | 0;
 HEAP8[$__p$0 + $__sz >> 0] = 0;
 return;
}

function _arVecInnerproduct($x, $y) {
 $x = $x | 0;
 $y = $y | 0;
 var $1 = 0, $13 = 0.0, $6 = 0, $7 = 0, $i$02 = 0, $result$0$lcssa = 0.0, $result$01 = 0.0;
 $1 = HEAP32[$x + 4 >> 2] | 0;
 if (($1 | 0) != (HEAP32[$y + 4 >> 2] | 0)) _exit(0);
 if (($1 | 0) > 0) {
  $6 = HEAP32[$x >> 2] | 0;
  $7 = HEAP32[$y >> 2] | 0;
  $i$02 = 0;
  $result$01 = 0.0;
  while (1) {
   $13 = $result$01 + +HEAPF64[$6 + ($i$02 << 3) >> 3] * +HEAPF64[$7 + ($i$02 << 3) >> 3];
   $i$02 = $i$02 + 1 | 0;
   if (($i$02 | 0) >= ($1 | 0)) {
    $result$0$lcssa = $13;
    break;
   } else $result$01 = $13;
  }
 } else $result$0$lcssa = 0.0;
 return +$result$0$lcssa;
}

function _memcmp($vl, $vr, $n) {
 $vl = $vl | 0;
 $vr = $vr | 0;
 $n = $n | 0;
 var $$03 = 0, $$lcssa = 0, $$lcssa19 = 0, $1 = 0, $11 = 0, $2 = 0, $l$04 = 0, $r$05 = 0;
 L1 : do if (!$n) $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;
   if ($1 << 24 >> 24 != $2 << 24 >> 24) {
    $$lcssa = $1;
    $$lcssa19 = $2;
    break;
   }
   $$03 = $$03 + -1 | 0;
   if (!$$03) {
    $11 = 0;
    break L1;
   } else {
    $l$04 = $l$04 + 1 | 0;
    $r$05 = $r$05 + 1 | 0;
   }
  }
  $11 = ($$lcssa & 255) - ($$lcssa19 & 255) | 0;
 } while (0);
 return $11 | 0;
}

function ___fmodeflags($mode) {
 $mode = $mode | 0;
 var $1 = 0, $2 = 0, $4 = 0, $7 = 0, $flags$0 = 0, $flags$0$ = 0, $flags$2 = 0, $flags$2$ = 0, $flags$4 = 0;
 $1 = (_strchr($mode, 43) | 0) == 0;
 $2 = HEAP8[$mode >> 0] | 0;
 $flags$0 = $1 ? $2 << 24 >> 24 != 114 & 1 : 2;
 $4 = (_strchr($mode, 120) | 0) == 0;
 $flags$0$ = $4 ? $flags$0 : $flags$0 | 128;
 $7 = (_strchr($mode, 101) | 0) == 0;
 $flags$2 = $7 ? $flags$0$ : $flags$0$ | 524288;
 $flags$2$ = $2 << 24 >> 24 == 114 ? $flags$2 : $flags$2 | 64;
 $flags$4 = $2 << 24 >> 24 == 119 ? $flags$2$ | 512 : $flags$2$;
 return ($2 << 24 >> 24 == 97 ? $flags$4 | 1024 : $flags$4) | 0;
}

function __ZNSt3__114__split_bufferIN10__cxxabiv112_GLOBAL__N_111string_pairERNS2_11short_allocIS3_Lj4096EEEEC2EjjS6_($this, $__cap, $__start, $__a) {
 $this = $this | 0;
 $__cap = $__cap | 0;
 $__start = $__start | 0;
 $__a = $__a | 0;
 var $6 = 0, $7 = 0;
 HEAP32[$this + 12 >> 2] = 0;
 HEAP32[$this + 16 >> 2] = $__a;
 if (!$__cap) $6 = 0; else $6 = __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj(HEAP32[$__a >> 2] | 0, $__cap * 24 | 0) | 0;
 HEAP32[$this >> 2] = $6;
 $7 = $6 + ($__start * 24 | 0) | 0;
 HEAP32[$this + 8 >> 2] = $7;
 HEAP32[$this + 4 >> 2] = $7;
 HEAP32[$this + 12 >> 2] = $6 + ($__cap * 24 | 0);
 return;
}

function __ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E($fn, $args) {
 $fn = $fn | 0;
 $args = $args | 0;
 var $0 = 0, $1 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = sp;
 __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($0, $args);
 $1 = FUNCTION_TABLE_ii[$fn & 31]($0) | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($0);
 STACKTOP = sp;
 return $1 | 0;
}

function _strncat($d, $s, $n) {
 $d = $d | 0;
 $s = $s | 0;
 $n = $n | 0;
 var $$0$lcssa = 0, $$014 = 0, $$023 = 0, $$05 = 0, $1 = 0, $3 = 0, $7 = 0;
 $1 = $d + (_strlen($d) | 0) | 0;
 L1 : do if (!$n) $$0$lcssa = $1; else {
  $$014 = $n;
  $$023 = $s;
  $$05 = $1;
  while (1) {
   $3 = HEAP8[$$023 >> 0] | 0;
   if (!($3 << 24 >> 24)) {
    $$0$lcssa = $$05;
    break L1;
   }
   $$014 = $$014 + -1 | 0;
   $7 = $$05 + 1 | 0;
   HEAP8[$$05 >> 0] = $3;
   if (!$$014) {
    $$0$lcssa = $7;
    break;
   } else {
    $$023 = $$023 + 1 | 0;
    $$05 = $7;
   }
  }
 } while (0);
 HEAP8[$$0$lcssa >> 0] = 0;
 return $d | 0;
}

function _get_buff($buf, $fp) {
 $buf = $buf | 0;
 $fp = $fp | 0;
 var $2 = 0, $5 = 0, $l$01 = 0;
 L1 : do if (_fgets($buf, 256, $fp) | 0) while (1) {
  $2 = _strlen($buf) | 0;
  L4 : do if ($2) {
   $l$01 = $2;
   while (1) {
    $l$01 = $l$01 + -1 | 0;
    $5 = $buf + $l$01 | 0;
    switch (HEAP8[$5 >> 0] | 0) {
    case 13:
    case 10:
     break;
    default:
     break L4;
    }
    HEAP8[$5 >> 0] = 0;
    if (!$l$01) break L4;
   }
  } while (0);
  switch (HEAP8[$buf >> 0] | 0) {
  case 0:
  case 35:
   break;
  default:
   break L1;
  }
  if (!(_fgets($buf, 256, $fp) | 0)) break L1;
 } while (0);
 return;
}

function __ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $adjustedPtr = $adjustedPtr | 0;
 $path_below = $path_below | 0;
 var $4 = 0;
 if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below); else {
  $4 = HEAP32[$this + 8 >> 2] | 0;
  FUNCTION_TABLE_viiii[HEAP32[(HEAP32[$4 >> 2] | 0) + 28 >> 2] & 3]($4, $info, $adjustedPtr, $path_below);
 }
 return;
}

function ___stdout_write($f, $buf, $len) {
 $f = $f | 0;
 $buf = $buf | 0;
 $len = $len | 0;
 var $9 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 80 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 HEAP32[$f + 36 >> 2] = 4;
 if (!(HEAP32[$f >> 2] & 64)) {
  HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];
  HEAP32[$vararg_buffer + 4 >> 2] = 21505;
  HEAP32[$vararg_buffer + 8 >> 2] = sp + 12;
  if (___syscall54(54, $vararg_buffer | 0) | 0) HEAP8[$f + 75 >> 0] = -1;
 }
 $9 = ___stdio_write($f, $buf, $len) | 0;
 STACKTOP = sp;
 return $9 | 0;
}

function _arUtilGetDirectoryNameFromPath($dir, $path, $n, $addSeparator) {
 $dir = $dir | 0;
 $path = $path | 0;
 $n = $n | 0;
 $addSeparator = $addSeparator | 0;
 var $$0 = 0, $10 = 0, $3 = 0;
 do if (($dir | 0) != 0 & ($path | 0) != 0 & ($n | 0) != 0) {
  $3 = _strrchr($path, 47) | 0;
  if (!$3) {
   HEAP8[$dir >> 0] = 0;
   $$0 = $dir;
   break;
  }
  $10 = $3 + (($addSeparator | 0) != 0 & 1) - $path | 0;
  if (($10 + 1 | 0) >>> 0 > $n >>> 0) $$0 = 0; else {
   _strncpy($dir, $path, $10) | 0;
   HEAP8[$dir + $10 >> 0] = 0;
   $$0 = $dir;
  }
 } else $$0 = 0; while (0);
 return $$0 | 0;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) {
 $this = $this | 0;
 var $2 = 0;
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0);
 $2 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = 0;
 if ($2) __ZdlPv($2);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) {
 $this = $this | 0;
 $__np = $__np | 0;
 var $$01 = 0, $$01$looptemp = 0;
 if ($__np) {
  $$01 = $__np;
  do {
   $$01$looptemp = $$01;
   $$01 = HEAP32[$$01 >> 2] | 0;
   __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($$01$looptemp + 264 | 0);
   __ZdlPv($$01$looptemp);
  } while (($$01 | 0) != 0);
 }
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this) {
 $this = $this | 0;
 var $2 = 0;
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, HEAP32[$this + 8 >> 2] | 0);
 $2 = HEAP32[$this >> 2] | 0;
 HEAP32[$this >> 2] = 0;
 if ($2) __ZdlPv($2);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2EOS1_($this, $0) {
 $this = $this | 0;
 $0 = $0 | 0;
 var $3 = 0, $4 = 0;
 HEAP32[$this >> 2] = HEAP32[$0 >> 2];
 HEAP32[$this + 4 >> 2] = HEAP32[$0 + 4 >> 2];
 HEAP32[$this + 8 >> 2] = HEAP32[$0 + 8 >> 2];
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 $3 = $this + 12 | 0;
 $4 = $0 + 12 | 0;
 HEAP32[$3 >> 2] = HEAP32[$4 >> 2];
 HEAP32[$3 + 4 >> 2] = HEAP32[$4 + 4 >> 2];
 HEAP32[$3 + 8 >> 2] = HEAP32[$4 + 8 >> 2];
 HEAP32[$4 >> 2] = 0;
 HEAP32[$4 + 4 >> 2] = 0;
 HEAP32[$4 + 8 >> 2] = 0;
 return;
}

function _arImageProcLumaHistAndCDF($ipi, $dataPtr) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 var $$0 = 0, $0 = 0, $cdfCurrent$0 = 0, $indvars$iv = 0;
 $0 = _arImageProcLumaHist($ipi, $dataPtr) | 0;
 if (($0 | 0) < 0) $$0 = $0; else {
  $cdfCurrent$0 = 0;
  $indvars$iv = 0;
  do {
   $cdfCurrent$0 = (HEAP32[$ipi + 16 + ($indvars$iv << 2) >> 2] | 0) + $cdfCurrent$0 | 0;
   HEAP32[$ipi + 1040 + ($indvars$iv << 2) >> 2] = $cdfCurrent$0;
   $indvars$iv = $indvars$iv + 1 | 0;
  } while (($indvars$iv | 0) != 256);
  $$0 = 0;
 }
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj5EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0, $1 = 0, $3 = 0;
 HEAP8[$this >> 0] = 8;
 $0 = $this + 1 | 0;
 $1 = HEAPU8[$s >> 0] | HEAPU8[$s + 1 >> 0] << 8 | HEAPU8[$s + 2 >> 0] << 16 | HEAPU8[$s + 3 >> 0] << 24;
 HEAP8[$0 >> 0] = $1;
 HEAP8[$0 + 1 >> 0] = $1 >> 8;
 HEAP8[$0 + 2 >> 0] = $1 >> 16;
 HEAP8[$0 + 3 >> 0] = $1 >> 24;
 HEAP8[$this + 5 >> 0] = 0;
 $3 = $this + 12 | 0;
 HEAP32[$3 >> 2] = 0;
 HEAP32[$3 + 4 >> 2] = 0;
 HEAP32[$3 + 8 >> 2] = 0;
 return;
}

function _vsscanf($s, $fmt, $ap) {
 $s = $s | 0;
 $fmt = $fmt | 0;
 $ap = $ap | 0;
 var $4 = 0, $f = 0, dest = 0, sp = 0, stop = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 112 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $f = sp;
 dest = $f;
 stop = dest + 112 | 0;
 do {
  HEAP32[dest >> 2] = 0;
  dest = dest + 4 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAP32[$f + 32 >> 2] = 15;
 HEAP32[$f + 44 >> 2] = $s;
 HEAP32[$f + 76 >> 2] = -1;
 HEAP32[$f + 84 >> 2] = $s;
 $4 = _vfscanf($f, $fmt, $ap) | 0;
 STACKTOP = sp;
 return $4 | 0;
}

function __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEED2Ev($this) {
 $this = $this | 0;
 var $$lcssa = 0, $$pre$i$i$i = 0, $1 = 0, $2 = 0, $4 = 0, $5 = 0, $7 = 0;
 $1 = HEAP32[$this + 4 >> 2] | 0;
 $2 = $this + 8 | 0;
 $$pre$i$i$i = HEAP32[$2 >> 2] | 0;
 if (($$pre$i$i$i | 0) != ($1 | 0)) {
  $5 = $$pre$i$i$i;
  while (1) {
   $4 = $5 + -8 | 0;
   if (($4 | 0) == ($1 | 0)) {
    $$lcssa = $4;
    break;
   } else $5 = $4;
  }
  HEAP32[$2 >> 2] = $$lcssa;
 }
 $7 = HEAP32[$this >> 2] | 0;
 if ($7) __ZdlPv($7);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEC2ERKS7_($this, $__str) {
 $this = $this | 0;
 $__str = $__str | 0;
 if (!(HEAP8[$__str >> 0] & 1)) {
  HEAP32[$this >> 2] = HEAP32[$__str >> 2];
  HEAP32[$this + 4 >> 2] = HEAP32[$__str + 4 >> 2];
  HEAP32[$this + 8 >> 2] = HEAP32[$__str + 8 >> 2];
 } else __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, HEAP32[$__str + 8 >> 2] | 0, HEAP32[$__str + 4 >> 2] | 0);
 return;
}

function __ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib($this, $info, $dst_ptr, $current_ptr, $path_below, $use_strcmp) {
 $this = $this | 0;
 $info = $info | 0;
 $dst_ptr = $dst_ptr | 0;
 $current_ptr = $current_ptr | 0;
 $path_below = $path_below | 0;
 $use_strcmp = $use_strcmp | 0;
 if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info29process_static_type_above_dstEPNS_19__dynamic_cast_infoEPKvS4_i(0, $info, $dst_ptr, $current_ptr, $path_below);
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj6EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0, $2 = 0;
 HEAP8[$this >> 0] = 10;
 $0 = $this + 1 | 0;
 HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0;
 HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0;
 HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0;
 HEAP8[$0 + 3 >> 0] = HEAP8[$s + 3 >> 0] | 0;
 HEAP8[$0 + 4 >> 0] = HEAP8[$s + 4 >> 0] | 0;
 HEAP8[$this + 6 >> 0] = 0;
 $2 = $this + 12 | 0;
 HEAP32[$2 >> 2] = 0;
 HEAP32[$2 + 4 >> 2] = 0;
 HEAP32[$2 + 8 >> 2] = 0;
 return;
}

function _fwrite($src, $size, $nmemb, $f) {
 $src = $src | 0;
 $size = $size | 0;
 $nmemb = $nmemb | 0;
 $f = $f | 0;
 var $0 = 0, $10 = 0, $6 = 0, $8 = 0, $phitmp = 0;
 $0 = Math_imul($nmemb, $size) | 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {
  $phitmp = (___lockfile($f) | 0) == 0;
  $6 = ___fwritex($src, $0, $f) | 0;
  if ($phitmp) $8 = $6; else {
   ___unlockfile($f);
   $8 = $6;
  }
 } else $8 = ___fwritex($src, $0, $f) | 0;
 if (($8 | 0) == ($0 | 0)) $10 = $nmemb; else $10 = ($8 >>> 0) / ($size >>> 0) | 0;
 return $10 | 0;
}

function ___string_read($f, $buf, $len) {
 $f = $f | 0;
 $buf = $buf | 0;
 $len = $len | 0;
 var $0 = 0, $1 = 0, $11 = 0, $2 = 0, $3 = 0, $k$0 = 0, $k$0$len = 0;
 $0 = $f + 84 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 $2 = $len + 256 | 0;
 $3 = _memchr($1, 0, $2) | 0;
 $k$0 = ($3 | 0) == 0 ? $2 : $3 - $1 | 0;
 $k$0$len = $k$0 >>> 0 < $len >>> 0 ? $k$0 : $len;
 _memcpy($buf | 0, $1 | 0, $k$0$len | 0) | 0;
 HEAP32[$f + 4 >> 2] = $1 + $k$0$len;
 $11 = $1 + $k$0 | 0;
 HEAP32[$f + 8 >> 2] = $11;
 HEAP32[$0 >> 2] = $11;
 return $k$0$len | 0;
}

function __Znwj($size) {
 $size = $size | 0;
 var $$lcssa = 0, $$size = 0, $1 = 0, $3 = 0, $5 = 0, $7 = 0;
 $$size = ($size | 0) == 0 ? 1 : $size;
 $1 = _malloc($$size) | 0;
 L1 : do if (!$1) {
  while (1) {
   $3 = __ZSt15get_new_handlerv() | 0;
   if (!$3) break;
   FUNCTION_TABLE_v[$3 & 0]();
   $5 = _malloc($$size) | 0;
   if ($5) {
    $$lcssa = $5;
    break L1;
   }
  }
  $7 = ___cxa_allocate_exception(4) | 0;
  HEAP32[$7 >> 2] = 2224;
  ___cxa_throw($7 | 0, 544, 1);
 } else $$lcssa = $1; while (0);
 return $$lcssa | 0;
}

function _calloc($n_elements, $elem_size) {
 $n_elements = $n_elements | 0;
 $elem_size = $elem_size | 0;
 var $1 = 0, $6 = 0, $req$0 = 0;
 if (!$n_elements) $req$0 = 0; else {
  $1 = Math_imul($elem_size, $n_elements) | 0;
  if (($elem_size | $n_elements) >>> 0 > 65535) $req$0 = (($1 >>> 0) / ($n_elements >>> 0) | 0 | 0) == ($elem_size | 0) ? $1 : -1; else $req$0 = $1;
 }
 $6 = _malloc($req$0) | 0;
 if (!$6) return $6 | 0;
 if (!(HEAP32[$6 + -4 >> 2] & 3)) return $6 | 0;
 _memset($6 | 0, 0, $req$0 | 0) | 0;
 return $6 | 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;
 $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;
 return (tempRet0 = (Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0) + (Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $1$1 | $1$1 & 0, $1$0 | 0 | 0) | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_12DbD2Ev($this) {
 $this = $this | 0;
 __ZNSt3__113__vector_baseINS_6vectorINS1_IN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEEENS5_IS9_Lj4096EEEED2Ev($this + 32 | 0);
 __ZNSt3__113__vector_baseINS_6vectorIN10__cxxabiv112_GLOBAL__N_111string_pairENS3_11short_allocIS4_Lj4096EEEEENS5_IS7_Lj4096EEEED2Ev($this + 16 | 0);
 __ZNSt3__113__vector_baseIN10__cxxabiv112_GLOBAL__N_111string_pairENS2_11short_allocIS3_Lj4096EEEED2Ev($this);
 return;
}

function __ZNSt3__114__split_bufferI12multi_markerRNS_9allocatorIS1_EEEC2EjjS4_($this, $__cap, $__start, $__a) {
 $this = $this | 0;
 $__cap = $__cap | 0;
 $__start = $__start | 0;
 $__a = $__a | 0;
 var $5 = 0, $6 = 0;
 HEAP32[$this + 12 >> 2] = 0;
 HEAP32[$this + 16 >> 2] = $__a;
 if (!$__cap) $5 = 0; else $5 = __Znwj($__cap << 3) | 0;
 HEAP32[$this >> 2] = $5;
 $6 = $5 + ($__start << 3) | 0;
 HEAP32[$this + 8 >> 2] = $6;
 HEAP32[$this + 4 >> 2] = $6;
 HEAP32[$this + 12 >> 2] = $5 + ($__cap << 3);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEEaSERKS7_($this, $__str) {
 $this = $this | 0;
 $__str = $__str | 0;
 var $1 = 0, $3 = 0;
 if (($this | 0) != ($__str | 0)) {
  $1 = HEAP8[$__str >> 0] | 0;
  $3 = ($1 & 1) == 0;
  __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6assignEPKcj($this, $3 ? $__str + 1 | 0 : HEAP32[$__str + 8 >> 2] | 0, $3 ? ($1 & 255) >>> 1 : HEAP32[$__str + 4 >> 2] | 0);
 }
 return;
}

function __ZNSt3__113__vector_baseI12multi_markerNS_9allocatorIS1_EEED2Ev($this) {
 $this = $this | 0;
 var $$lcssa = 0, $$pre$i$i = 0, $0 = 0, $2 = 0, $4 = 0, $5 = 0;
 $0 = HEAP32[$this >> 2] | 0;
 if ($0) {
  $2 = $this + 4 | 0;
  $$pre$i$i = HEAP32[$2 >> 2] | 0;
  if (($$pre$i$i | 0) != ($0 | 0)) {
   $5 = $$pre$i$i;
   while (1) {
    $4 = $5 + -8 | 0;
    if (($4 | 0) == ($0 | 0)) {
     $$lcssa = $4;
     break;
    } else $5 = $4;
   }
   HEAP32[$2 >> 2] = $$lcssa;
  }
  __ZdlPv($0);
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj11EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $2 = 0, dest = 0, src = 0, stop = 0;
 HEAP8[$this >> 0] = 20;
 dest = $this + 1 | 0;
 src = $s;
 stop = dest + 10 | 0;
 do {
  HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
  dest = dest + 1 | 0;
  src = src + 1 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAP8[$this + 11 >> 0] = 0;
 $2 = $this + 12 | 0;
 HEAP32[$2 >> 2] = 0;
 HEAP32[$2 + 4 >> 2] = 0;
 HEAP32[$2 + 8 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj10EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $2 = 0, dest = 0, src = 0, stop = 0;
 HEAP8[$this >> 0] = 18;
 dest = $this + 1 | 0;
 src = $s;
 stop = dest + 9 | 0;
 do {
  HEAP8[dest >> 0] = HEAP8[src >> 0] | 0;
  dest = dest + 1 | 0;
  src = src + 1 | 0;
 } while ((dest | 0) < (stop | 0));
 HEAP8[$this + 10 >> 0] = 0;
 $2 = $this + 12 | 0;
 HEAP32[$2 >> 2] = 0;
 HEAP32[$2 + 4 >> 2] = 0;
 HEAP32[$2 + 8 >> 2] = 0;
 return;
}

function ___towrite($f) {
 $f = $f | 0;
 var $$0 = 0, $0 = 0, $13 = 0, $2 = 0, $6 = 0;
 $0 = $f + 74 | 0;
 $2 = HEAP8[$0 >> 0] | 0;
 HEAP8[$0 >> 0] = $2 + 255 | $2;
 $6 = HEAP32[$f >> 2] | 0;
 if (!($6 & 8)) {
  HEAP32[$f + 8 >> 2] = 0;
  HEAP32[$f + 4 >> 2] = 0;
  $13 = HEAP32[$f + 44 >> 2] | 0;
  HEAP32[$f + 28 >> 2] = $13;
  HEAP32[$f + 20 >> 2] = $13;
  HEAP32[$f + 16 >> 2] = $13 + (HEAP32[$f + 48 >> 2] | 0);
  $$0 = 0;
 } else {
  HEAP32[$f >> 2] = $6 | 32;
  $$0 = -1;
 }
 return $$0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ENSt3__112basic_stringIcNS2_11char_traitsIcEENS0_12malloc_allocIcEEEE($this, $f) {
 $this = $this | 0;
 $f = $f | 0;
 var $2 = 0;
 HEAP32[$this >> 2] = HEAP32[$f >> 2];
 HEAP32[$this + 4 >> 2] = HEAP32[$f + 4 >> 2];
 HEAP32[$this + 8 >> 2] = HEAP32[$f + 8 >> 2];
 HEAP32[$f >> 2] = 0;
 HEAP32[$f + 4 >> 2] = 0;
 HEAP32[$f + 8 >> 2] = 0;
 $2 = $this + 12 | 0;
 HEAP32[$2 >> 2] = 0;
 HEAP32[$2 + 4 >> 2] = 0;
 HEAP32[$2 + 8 >> 2] = 0;
 return;
}

function _matrixCopy($src, $dst) {
 $src = $src | 0;
 $dst = $dst | 0;
 var $i$03 = 0;
 $i$03 = 0;
 do {
  HEAPF64[$dst + ($i$03 << 5) >> 3] = +HEAPF64[$src + ($i$03 << 5) >> 3];
  HEAPF64[$dst + ($i$03 << 5) + 8 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 8 >> 3];
  HEAPF64[$dst + ($i$03 << 5) + 16 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 16 >> 3];
  HEAPF64[$dst + ($i$03 << 5) + 24 >> 3] = +HEAPF64[$src + ($i$03 << 5) + 24 >> 3];
  $i$03 = $i$03 + 1 | 0;
 } while (($i$03 | 0) != 3);
 return;
}

function __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEE12__deallocateEPNS_11__hash_nodeIS3_PvEE($this, $__np) {
 $this = $this | 0;
 $__np = $__np | 0;
 var $$01 = 0, $$01$looptemp = 0;
 if ($__np) {
  $$01 = $__np;
  do {
   $$01$looptemp = $$01;
   $$01 = HEAP32[$$01 >> 2] | 0;
   __ZdlPv($$01$looptemp);
  } while (($$01 | 0) != 0);
 }
 return;
}

function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEE25__construct_node_with_keyERS8_($agg$result, $this, $__k) {
 $agg$result = $agg$result | 0;
 $this = $this | 0;
 $__k = $__k | 0;
 var $1 = 0, $8 = 0;
 $1 = __Znwj(200) | 0;
 HEAP32[$1 + 8 >> 2] = HEAP32[$__k >> 2];
 _memset($1 + 16 | 0, 0, 184) | 0;
 HEAP32[$agg$result >> 2] = $1;
 $8 = $agg$result + 4 | 0;
 HEAP32[$8 >> 2] = $this + 8;
 HEAP32[$8 + 4 >> 2] = 257;
 return;
}

function _byteSwapDouble($from, $to) {
 $from = $from | 0;
 $to = $to | 0;
 HEAP8[$to >> 0] = HEAP8[$from + 7 >> 0] | 0;
 HEAP8[$to + 1 >> 0] = HEAP8[$from + 6 >> 0] | 0;
 HEAP8[$to + 2 >> 0] = HEAP8[$from + 5 >> 0] | 0;
 HEAP8[$to + 3 >> 0] = HEAP8[$from + 4 >> 0] | 0;
 HEAP8[$to + 4 >> 0] = HEAP8[$from + 3 >> 0] | 0;
 HEAP8[$to + 5 >> 0] = HEAP8[$from + 2 >> 0] | 0;
 HEAP8[$to + 6 >> 0] = HEAP8[$from + 1 >> 0] | 0;
 HEAP8[$to + 7 >> 0] = HEAP8[$from >> 0] | 0;
 return;
}

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 ___ftello_unlocked($f) {
 $f = $f | 0;
 var $$0 = 0, $10 = 0, $11 = 0;
 if (!(HEAP32[$f >> 2] & 128)) $10 = 1; else $10 = (HEAP32[$f + 20 >> 2] | 0) >>> 0 > (HEAP32[$f + 28 >> 2] | 0) >>> 0 ? 2 : 1;
 $11 = FUNCTION_TABLE_iiii[HEAP32[$f + 40 >> 2] & 15]($f, 0, $10) | 0;
 if (($11 | 0) < 0) $$0 = $11; else $$0 = $11 - (HEAP32[$f + 8 >> 2] | 0) + (HEAP32[$f + 4 >> 2] | 0) + (HEAP32[$f + 20 >> 2] | 0) - (HEAP32[$f + 28 >> 2] | 0) | 0;
 return $$0 | 0;
}

function ___uflow($f) {
 $f = $f | 0;
 var $$0 = 0, $c = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $c = sp;
 if (!(HEAP32[$f + 8 >> 2] | 0)) if (!(___toread($f) | 0)) label = 3; else $$0 = -1; else label = 3;
 if ((label | 0) == 3) if ((FUNCTION_TABLE_iiii[HEAP32[$f + 32 >> 2] & 15]($f, $c, 1) | 0) == 1) $$0 = HEAPU8[$c >> 0] | 0; else $$0 = -1;
 STACKTOP = sp;
 return $$0 | 0;
}

function _deleteHandle($arc) {
 $arc = $arc | 0;
 var $0 = 0, $1 = 0, $4 = 0, $7 = 0;
 $0 = $arc + 212 | 0;
 $1 = HEAP32[$0 >> 2] | 0;
 if ($1) {
  _arPattDetach($1) | 0;
  _arDeleteHandle(HEAP32[$0 >> 2] | 0) | 0;
  HEAP32[$0 >> 2] = 0;
 }
 $4 = $arc + 224 | 0;
 if (HEAP32[$4 >> 2] | 0) {
  _ar3DDeleteHandle($4) | 0;
  HEAP32[$4 >> 2] = 0;
 }
 $7 = $arc + 192 | 0;
 if (HEAP32[$7 >> 2] | 0) {
  _arParamLTFree($7) | 0;
  HEAP32[$7 >> 2] = 0;
 }
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj4EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0, $2 = 0;
 HEAP8[$this >> 0] = 6;
 $0 = $this + 1 | 0;
 HEAP8[$0 >> 0] = HEAP8[$s >> 0] | 0;
 HEAP8[$0 + 1 >> 0] = HEAP8[$s + 1 >> 0] | 0;
 HEAP8[$0 + 2 >> 0] = HEAP8[$s + 2 >> 0] | 0;
 HEAP8[$this + 4 >> 0] = 0;
 $2 = $this + 12 | 0;
 HEAP32[$2 >> 2] = 0;
 HEAP32[$2 + 4 >> 2] = 0;
 HEAP32[$2 + 8 >> 2] = 0;
 return;
}

function __ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi($this, $info, $adjustedPtr, $path_below) {
 $this = $this | 0;
 $info = $info | 0;
 $adjustedPtr = $adjustedPtr | 0;
 $path_below = $path_below | 0;
 if (($this | 0) == (HEAP32[$info + 8 >> 2] | 0)) __ZNK10__cxxabiv117__class_type_info24process_found_base_classEPNS_19__dynamic_cast_infoEPvi(0, $info, $adjustedPtr, $path_below);
 return;
}

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) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, $8 + $12 << 16 | $3 & 65535 | 0) | 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)) {
  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 _arUtilGetPixelSize($arPixelFormat) {
 $arPixelFormat = $arPixelFormat | 0;
 var $$0 = 0;
 switch ($arPixelFormat | 0) {
 case 1:
 case 0:
  {
   $$0 = 3;
   break;
  }
 case 6:
 case 4:
 case 3:
 case 2:
  {
   $$0 = 4;
   break;
  }
 case 14:
 case 13:
 case 12:
 case 5:
  {
   $$0 = 1;
   break;
  }
 case 11:
 case 10:
 case 9:
 case 8:
 case 7:
  {
   $$0 = 2;
   break;
  }
 default:
  $$0 = 0;
 }
 return $$0 | 0;
}

function _copysign($x, $y) {
 $x = +$x;
 $y = +$y;
 var $0 = 0, $1 = 0, $6 = 0;
 HEAPF64[tempDoublePtr >> 3] = $x;
 $0 = HEAP32[tempDoublePtr >> 2] | 0;
 $1 = HEAP32[tempDoublePtr + 4 >> 2] | 0;
 HEAPF64[tempDoublePtr >> 3] = $y;
 $6 = HEAP32[tempDoublePtr + 4 >> 2] & -2147483648 | $1 & 2147483647;
 HEAP32[tempDoublePtr >> 2] = $0;
 HEAP32[tempDoublePtr + 4 >> 2] = $6;
 return +(+HEAPF64[tempDoublePtr >> 3]);
}

function _arMatrixAlloc($row, $clm) {
 $row = $row | 0;
 $clm = $clm | 0;
 var $$0 = 0, $0 = 0, $4 = 0;
 $0 = _malloc(12) | 0;
 do if (!$0) $$0 = 0; else {
  $4 = _malloc(Math_imul($row << 3, $clm) | 0) | 0;
  HEAP32[$0 >> 2] = $4;
  if (!$4) {
   _free($0);
   $$0 = 0;
   break;
  } else {
   HEAP32[$0 + 4 >> 2] = $row;
   HEAP32[$0 + 8 >> 2] = $clm;
   $$0 = $0;
   break;
  }
 } while (0);
 return $$0 | 0;
}

function _ar3DCreateHandle2($cpara) {
 $cpara = $cpara | 0;
 var $$0 = 0, $0 = 0, $2 = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $0 = _malloc(4) | 0;
 if (!$0) {
  _arLog(3, 5471, sp);
  _exit(1);
 }
 $2 = _icpCreateHandle($cpara) | 0;
 HEAP32[$0 >> 2] = $2;
 if (!$2) {
  _free($0);
  $$0 = 0;
 } else $$0 = $0;
 STACKTOP = sp;
 return $$0 | 0;
}

function ___fseeko($f, $off, $whence) {
 $f = $f | 0;
 $off = $off | 0;
 $whence = $whence | 0;
 var $5 = 0, $6 = 0, $phitmp = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {
  $phitmp = (___lockfile($f) | 0) == 0;
  $5 = ___fseeko_unlocked($f, $off, $whence) | 0;
  if ($phitmp) $6 = $5; else {
   ___unlockfile($f);
   $6 = $5;
  }
 } else $6 = ___fseeko_unlocked($f, $off, $whence) | 0;
 return $6 | 0;
}

function __GLOBAL__sub_I_ARToolKitJS_cpp() {
 HEAP32[511] = 0;
 HEAP32[512] = 0;
 HEAP32[513] = 0;
 HEAP32[514] = 0;
 HEAPF32[515] = 1.0;
 ___cxa_atexit(11, 2044, ___dso_handle | 0) | 0;
 HEAP32[516] = 0;
 HEAP32[517] = 0;
 HEAP32[518] = 0;
 HEAP32[519] = 0;
 HEAPF32[520] = 1.0;
 ___cxa_atexit(12, 2064, ___dso_handle | 0) | 0;
 __ZN46EmscriptenBindingInitializer_constant_bindingsC2Ev(0);
 return;
}

function _arParamLTFree($paramLT_p) {
 $paramLT_p = $paramLT_p | 0;
 var $$0 = 0, $1 = 0;
 if (!$paramLT_p) $$0 = -1; else {
  $1 = HEAP32[$paramLT_p >> 2] | 0;
  if (!$1) $$0 = -1; else {
   _free(HEAP32[$1 + 184 >> 2] | 0);
   _free(HEAP32[(HEAP32[$paramLT_p >> 2] | 0) + 188 >> 2] | 0);
   _free(HEAP32[$paramLT_p >> 2] | 0);
   HEAP32[$paramLT_p >> 2] = 0;
   $$0 = 0;
  }
 }
 return $$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 + 16 | 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 _arDeleteHandle($handle) {
 $handle = $handle | 0;
 var $$0 = 0, $1 = 0, $2 = 0;
 if (!$handle) $$0 = -1; else {
  $1 = $handle + 7062408 | 0;
  $2 = HEAP32[$1 >> 2] | 0;
  if ($2) {
   _arImageProcFinal($2);
   HEAP32[$1 >> 2] = 0;
  }
  _free(HEAP32[$handle + 4834144 >> 2] | 0);
  _free(HEAP32[$handle + 4834148 >> 2] | 0);
  _free($handle);
  $$0 = 0;
 }
 return $$0 | 0;
}

function _llvm_cttz_i32(x) {
 x = x | 0;
 var ret = 0;
 ret = HEAP8[cttz_i8 + (x & 255) >> 0] | 0;
 if ((ret | 0) < 8) return ret | 0;
 ret = HEAP8[cttz_i8 + (x >> 8 & 255) >> 0] | 0;
 if ((ret | 0) < 8) return ret + 8 | 0;
 ret = HEAP8[cttz_i8 + (x >> 16 & 255) >> 0] | 0;
 if ((ret | 0) < 8) return ret + 16 | 0;
 return (HEAP8[cttz_i8 + (x >>> 24) >> 0] | 0) + 24 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE8allocateEj($this, $n) {
 $this = $this | 0;
 $n = $n | 0;
 var $$0 = 0, $1 = 0, $3 = 0, $4 = 0;
 $1 = $n + 15 & -16;
 $3 = $this + 4096 | 0;
 $4 = HEAP32[$3 >> 2] | 0;
 if (($this + 4096 - $4 | 0) >>> 0 < $1 >>> 0) $$0 = _malloc($1) | 0; else {
  HEAP32[$3 >> 2] = $4 + $1;
  $$0 = $4;
 }
 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, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ap = sp;
 HEAP32[$ap >> 2] = $varargs;
 $0 = _vsnprintf($s, $n, $fmt, $ap) | 0;
 STACKTOP = sp;
 return $0 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj18EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 17);
 $0 = $this + 12 | 0;
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj15EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 14);
 $0 = $this + 12 | 0;
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj14EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 13);
 $0 = $this + 12 | 0;
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj13EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 12);
 $0 = $this + 12 | 0;
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 return;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairC2ILj12EEERAT__Kc($this, $s) {
 $this = $this | 0;
 $s = $s | 0;
 var $0 = 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6__initEPKcj($this, $s, 11);
 $0 = $this + 12 | 0;
 HEAP32[$0 >> 2] = 0;
 HEAP32[$0 + 4 >> 2] = 0;
 HEAP32[$0 + 8 >> 2] = 0;
 return;
}

function __ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) {
 $this = $this | 0;
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIi12arControllerEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this);
 return;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKc($this, $__pos, $__s) {
 $this = $this | 0;
 $__pos = $__pos | 0;
 $__s = $__s | 0;
 return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6insertEjPKcj($this, $__pos, $__s, _strlen($__s) | 0) | 0;
}

function ___shlim($f, $lim) {
 $f = $f | 0;
 $lim = $lim | 0;
 var $4 = 0, $5 = 0, $7 = 0;
 HEAP32[$f + 104 >> 2] = $lim;
 $4 = HEAP32[$f + 4 >> 2] | 0;
 $5 = HEAP32[$f + 8 >> 2] | 0;
 $7 = $5 - $4 | 0;
 HEAP32[$f + 108 >> 2] = $7;
 if (($lim | 0) != 0 & ($7 | 0) > ($lim | 0)) HEAP32[$f + 100 >> 2] = $4 + $lim; else HEAP32[$f + 100 >> 2] = $5;
 return;
}

function ___stdio_close($f) {
 $f = $f | 0;
 var $3 = 0, $vararg_buffer = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $vararg_buffer = sp;
 HEAP32[$vararg_buffer >> 2] = HEAP32[$f + 60 >> 2];
 $3 = ___syscall_ret(___syscall6(6, $vararg_buffer | 0) | 0) | 0;
 STACKTOP = sp;
 return $3 | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_15arenaILj4096EE10deallocateEPcj($this, $p, $n) {
 $this = $this | 0;
 $p = $p | 0;
 $n = $n | 0;
 var $7 = 0;
 if ($this >>> 0 <= $p >>> 0 & ($this + 4096 | 0) >>> 0 >= $p >>> 0) {
  $7 = $this + 4096 | 0;
  if (($p + ($n + 15 & -16) | 0) == (HEAP32[$7 >> 2] | 0)) HEAP32[$7 >> 2] = $p;
 } else _free($p);
 return;
}

function _rewind($f) {
 $f = $f | 0;
 var $phitmp = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {
  $phitmp = (___lockfile($f) | 0) == 0;
  ___fseeko_unlocked($f, 0, 0) | 0;
  HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33;
  if (!$phitmp) ___unlockfile($f);
 } else {
  ___fseeko_unlocked($f, 0, 0) | 0;
  HEAP32[$f >> 2] = HEAP32[$f >> 2] & -33;
 }
 return;
}

function _arPattFree($pattHandle, $patno) {
 $pattHandle = $pattHandle | 0;
 $patno = $patno | 0;
 var $$0 = 0, $2 = 0;
 $2 = (HEAP32[$pattHandle + 8 >> 2] | 0) + ($patno << 2) | 0;
 if (!(HEAP32[$2 >> 2] | 0)) $$0 = -1; else {
  HEAP32[$2 >> 2] = 0;
  HEAP32[$pattHandle >> 2] = (HEAP32[$pattHandle >> 2] | 0) + -1;
  $$0 = 1;
 }
 return $$0 | 0;
}

function __ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev($this) {
 $this = $this | 0;
 __ZNSt3__112__hash_tableINS_17__hash_value_typeIi7ARParamEENS_22__unordered_map_hasherIiS3_NS_4hashIiEELb1EEENS_21__unordered_map_equalIiS3_NS_8equal_toIiEELb1EEENS_9allocatorIS3_EEED2Ev($this);
 return;
}

function _sn_write($f, $s, $l) {
 $f = $f | 0;
 $s = $s | 0;
 $l = $l | 0;
 var $2 = 0, $3 = 0, $6 = 0, $l$ = 0;
 $2 = $f + 20 | 0;
 $3 = HEAP32[$2 >> 2] | 0;
 $6 = (HEAP32[$f + 16 >> 2] | 0) - $3 | 0;
 $l$ = $6 >>> 0 > $l >>> 0 ? $l : $6;
 _memcpy($3 | 0, $s | 0, $l$ | 0) | 0;
 HEAP32[$2 >> 2] = (HEAP32[$2 >> 2] | 0) + $l$;
 return $l | 0;
}

function _ferror($f) {
 $f = $f | 0;
 var $$lobit = 0, $$lobit2 = 0, $phitmp = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {
  $phitmp = (___lockfile($f) | 0) == 0;
  $$lobit = (HEAP32[$f >> 2] | 0) >>> 5 & 1;
  if ($phitmp) $$lobit2 = $$lobit; else $$lobit2 = $$lobit;
 } else $$lobit2 = (HEAP32[$f >> 2] | 0) >>> 5 & 1;
 return $$lobit2 | 0;
}

function ___memrchr($m, $c, $n) {
 $m = $m | 0;
 $c = $c | 0;
 $n = $n | 0;
 var $$0 = 0, $$01 = 0, $0 = 0, $3 = 0;
 $0 = $c & 255;
 $$01 = $n;
 while (1) {
  if (!$$01) {
   $$0 = 0;
   break;
  }
  $$01 = $$01 + -1 | 0;
  $3 = $m + $$01 | 0;
  if ((HEAP8[$3 >> 0] | 0) == $0 << 24 >> 24) {
   $$0 = $3;
   break;
  }
 }
 return $$0 | 0;
}

function __ZN10emscripten8internal11BindingTypeINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE12fromWireTypeEPNS9_Ut_E($agg$result, $v) {
 $agg$result = $agg$result | 0;
 $v = $v | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcj($agg$result, $v + 4 | 0, HEAP32[$v >> 2] | 0);
 return;
}

function _arVecAlloc($clm) {
 $clm = $clm | 0;
 var $$0 = 0, $0 = 0, $3 = 0;
 $0 = _malloc(8) | 0;
 do if (!$0) $$0 = 0; else {
  $3 = _malloc($clm << 3) | 0;
  HEAP32[$0 >> 2] = $3;
  if (!$3) {
   _free($0);
   $$0 = 0;
   break;
  } else {
   HEAP32[$0 + 4 >> 2] = $clm;
   $$0 = $0;
   break;
  }
 } while (0);
 return $$0 | 0;
}

function _sscanf($s, $fmt, $varargs) {
 $s = $s | 0;
 $fmt = $fmt | 0;
 $varargs = $varargs | 0;
 var $0 = 0, $ap = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16 | 0;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 $ap = sp;
 HEAP32[$ap >> 2] = $varargs;
 $0 = _vsscanf($s, $fmt, $ap) | 0;
 STACKTOP = sp;
 return $0 | 0;
}

function _arPattAttach($arHandle, $arPattHandle) {
 $arHandle = $arHandle | 0;
 $arPattHandle = $arPattHandle | 0;
 var $$0 = 0, $1 = 0;
 if (!$arHandle) $$0 = -1; else {
  $1 = $arHandle + 7062384 | 0;
  if (!(HEAP32[$1 >> 2] | 0)) {
   HEAP32[$1 >> 2] = $arPattHandle;
   $$0 = 0;
  } else $$0 = -1;
 }
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKc($this, $__s) {
 $this = $this | 0;
 $__s = $__s | 0;
 return __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEE6appendEPKcj($this, $__s, _strlen($__s) | 0) | 0;
}

function __ZN10__cxxabiv112_GLOBAL__N_111string_pairD2Ev($this) {
 $this = $this | 0;
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this + 12 | 0);
 __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this);
 return;
}

function _arMatrixAllocTrans($source) {
 $source = $source | 0;
 var $$0 = 0, $4 = 0;
 $4 = _arMatrixAlloc(HEAP32[$source + 8 >> 2] | 0, HEAP32[$source + 4 >> 2] | 0) | 0;
 if (!$4) $$0 = 0; else if ((_arMatrixTrans($4, $source) | 0) < 0) {
  _arMatrixFree($4) | 0;
  $$0 = 0;
 } else $$0 = $4;
 return $$0 | 0;
}

function _arMatrixAllocDup($source) {
 $source = $source | 0;
 var $$0 = 0, $4 = 0;
 $4 = _arMatrixAlloc(HEAP32[$source + 4 >> 2] | 0, HEAP32[$source + 8 >> 2] | 0) | 0;
 if (!$4) $$0 = 0; else if ((_arMatrixDup($4, $source) | 0) < 0) {
  _arMatrixFree($4) | 0;
  $$0 = 0;
 } else $$0 = $4;
 return $$0 | 0;
}

function _arMatrixAllocMul($a, $b) {
 $a = $a | 0;
 $b = $b | 0;
 var $$0 = 0, $4 = 0;
 $4 = _arMatrixAlloc(HEAP32[$a + 4 >> 2] | 0, HEAP32[$b + 8 >> 2] | 0) | 0;
 if (!$4) $$0 = 0; else if ((_arMatrixMul($4, $a, $b) | 0) < 0) {
  _arMatrixFree($4) | 0;
  $$0 = 0;
 } else $$0 = $4;
 return $$0 | 0;
}

function _arGetTransMatMultiSquareRobust($handle, $marker_info, $marker_num, $config) {
 $handle = $handle | 0;
 $marker_info = $marker_info | 0;
 $marker_num = $marker_num | 0;
 $config = $config | 0;
 return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 1));
}

function _arGetTransMatMultiSquare($handle, $marker_info, $marker_num, $config) {
 $handle = $handle | 0;
 $marker_info = $marker_info | 0;
 $marker_num = $marker_num | 0;
 $config = $config | 0;
 return +(+_arGetTransMatMultiSquare2($handle, $marker_info, $marker_num, $config, 0));
}

function ___ftello($f) {
 $f = $f | 0;
 var $5 = 0, $6 = 0, $phitmp = 0;
 if ((HEAP32[$f + 76 >> 2] | 0) > -1) {
  $phitmp = (___lockfile($f) | 0) == 0;
  $5 = ___ftello_unlocked($f) | 0;
  if ($phitmp) $6 = $5; else $6 = $5;
 } else $6 = ___ftello_unlocked($f) | 0;
 return $6 | 0;
}

function _arSetPattRatio($handle, $pattRatio) {
 $handle = $handle | 0;
 $pattRatio = +$pattRatio;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else if ($pattRatio <= 0.0 | $pattRatio >= 1.0) $$0 = -1; else {
  HEAPF64[$handle + 7062416 >> 3] = $pattRatio;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _bitshift64Ashr(low, high, bits) {
 low = low | 0;
 high = high | 0;
 bits = bits | 0;
 if ((bits | 0) < 32) {
  tempRet0 = high >> bits;
  return low >>> bits | (high & (1 << bits) - 1) << 32 - bits;
 }
 tempRet0 = (high | 0) < 0 ? -1 : 0;
 return high >> bits - 32 | 0;
}

function _byteSwapInt($from, $to) {
 $from = $from | 0;
 $to = $to | 0;
 HEAP8[$to >> 0] = HEAP8[$from + 3 >> 0] | 0;
 HEAP8[$to + 1 >> 0] = HEAP8[$from + 2 >> 0] | 0;
 HEAP8[$to + 2 >> 0] = HEAP8[$from + 1 >> 0] | 0;
 HEAP8[$to + 3 >> 0] = HEAP8[$from >> 0] | 0;
 return;
}

function _arGetLabelingThreshMode($handle, $mode_p) {
 $handle = $handle | 0;
 $mode_p = $mode_p | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & ($mode_p | 0) != 0) {
  HEAP32[$mode_p >> 2] = HEAP32[$handle + 7062388 >> 2];
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function _bitshift64Shl(low, high, bits) {
 low = low | 0;
 high = high | 0;
 bits = bits | 0;
 if ((bits | 0) < 32) {
  tempRet0 = high << bits | (low & (1 << bits) - 1 << 32 - bits) >>> 32 - bits;
  return low << bits;
 }
 tempRet0 = low << bits - 32;
 return 0;
}

function _ar3DDeleteHandle($handle) {
 $handle = $handle | 0;
 var $$0 = 0, $0 = 0;
 $0 = HEAP32[$handle >> 2] | 0;
 if (!$0) $$0 = -1; else {
  _icpDeleteHandle($0) | 0;
  _free(HEAP32[$handle >> 2] | 0);
  HEAP32[$handle >> 2] = 0;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _arGetMatrixCodeType($handle, $type_p) {
 $handle = $handle | 0;
 $type_p = $type_p | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & ($type_p | 0) != 0) {
  HEAP32[$type_p >> 2] = HEAP32[$handle + 7062424 >> 2];
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function _bitshift64Lshr(low, high, bits) {
 low = low | 0;
 high = high | 0;
 bits = bits | 0;
 if ((bits | 0) < 32) {
  tempRet0 = high >>> bits;
  return low >>> bits | (high & (1 << bits) - 1) << 32 - bits;
 }
 tempRet0 = 0;
 return high >>> bits - 32 | 0;
}

function _arPattDetach($arHandle) {
 $arHandle = $arHandle | 0;
 var $$0 = 0, $1 = 0;
 if (!$arHandle) $$0 = -1; else {
  $1 = $arHandle + 7062384 | 0;
  if (!(HEAP32[$1 >> 2] | 0)) $$0 = -1; else {
   HEAP32[$1 >> 2] = 0;
   $$0 = 0;
  }
 }
 return $$0 | 0;
}

function _arGetLabelingThresh($handle, $thresh) {
 $handle = $handle | 0;
 $thresh = $thresh | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & ($thresh | 0) != 0) {
  HEAP32[$thresh >> 2] = HEAP32[$handle + 16 >> 2];
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function __ZN10emscripten8functionIiJiNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 3, 2180, 10905, 12, $fn | 0);
 return;
}

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 __ZN10emscripten8functionIiJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 2, 2160, 10800, 11, $fn | 0);
 return;
}

function dynCall_viiiiii(index, a1, a2, a3, a4, a5, a6) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = a3 | 0;
 a4 = a4 | 0;
 a5 = a5 | 0;
 a6 = a6 | 0;
 FUNCTION_TABLE_viiiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0, a6 | 0);
}

function _arSetLabelingThresh($handle, $thresh) {
 $handle = $handle | 0;
 $thresh = $thresh | 0;
 var $$0 = 0;
 if (($handle | 0) == 0 | $thresh >>> 0 > 255) $$0 = -1; else {
  HEAP32[$handle + 16 >> 2] = $thresh;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _arGetLabelingMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & ($mode | 0) != 0) {
  HEAP32[$mode >> 2] = HEAP32[$handle + 12 >> 2];
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function __ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii($fn, $args, $args1, $args2) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = $args1 | 0;
 $args2 = $args2 | 0;
 return FUNCTION_TABLE_iiii[$fn & 15]($args, $args1, $args2) | 0;
}

function _arGetPattRatio($handle, $pattRatio) {
 $handle = $handle | 0;
 $pattRatio = $pattRatio | 0;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else {
  HEAPF64[$pattRatio >> 3] = +HEAPF64[$handle + 7062416 >> 3];
  $$0 = 0;
 }
 return $$0 | 0;
}

function _arSetPatternDetectionMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & $mode >>> 0 < 5) {
  HEAP32[$handle + 24 >> 2] = $mode;
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function _arGetDebugMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & ($mode | 0) != 0) {
  HEAP32[$mode >> 2] = HEAP32[$handle >> 2];
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function _icpSetInlierProbability($handle, $inlierProb) {
 $handle = $handle | 0;
 $inlierProb = +$inlierProb;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else {
  HEAPF64[$handle + 128 >> 3] = $inlierProb;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _arSetImageProcMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & $mode >>> 0 < 2) {
  HEAP32[$handle + 20 >> 2] = $mode;
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function _arSetLabelingMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (($handle | 0) != 0 & $mode >>> 0 < 2) {
  HEAP32[$handle + 12 >> 2] = $mode;
  $$0 = 0;
 } else $$0 = -1;
 return $$0 | 0;
}

function __ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv($this, $thrown_type, $0) {
 $this = $this | 0;
 $thrown_type = $thrown_type | 0;
 $0 = $0 | 0;
 return ($this | 0) == ($thrown_type | 0) | 0;
}

function runPostSets() {}
function _i64Subtract(a, b, c, d) {
 a = a | 0;
 b = b | 0;
 c = c | 0;
 d = d | 0;
 var h = 0;
 h = b - d >>> 0;
 h = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;
 return (tempRet0 = h, a - c >>> 0 | 0) | 0;
}

function _arImageProcLumaHistAndCDFAndMedian($ipi, $dataPtr, $value_p) {
 $ipi = $ipi | 0;
 $dataPtr = $dataPtr | 0;
 $value_p = $value_p | 0;
 return _arImageProcLumaHistAndCDFAndPercentile($ipi, $dataPtr, .5, $value_p) | 0;
}

function _arGetPatternDetectionMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else {
  HEAP32[$mode >> 2] = HEAP32[$handle + 24 >> 2];
  $$0 = 0;
 }
 return $$0 | 0;
}

function ___strdup($s) {
 $s = $s | 0;
 var $$0 = 0, $1 = 0, $2 = 0;
 $1 = (_strlen($s) | 0) + 1 | 0;
 $2 = _malloc($1) | 0;
 if (!$2) $$0 = 0; else {
  _memcpy($2 | 0, $s | 0, $1 | 0) | 0;
  $$0 = $2;
 }
 return $$0 | 0;
}

function dynCall_viiiii(index, a1, a2, a3, a4, a5) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = a3 | 0;
 a4 = a4 | 0;
 a5 = a5 | 0;
 FUNCTION_TABLE_viiiii[index & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0, a5 | 0);
}

function _arGetImageProcMode($handle, $mode) {
 $handle = $handle | 0;
 $mode = $mode | 0;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else {
  HEAP32[$mode >> 2] = HEAP32[$handle + 20 >> 2];
  $$0 = 0;
 }
 return $$0 | 0;
}

function _icpDeleteHandle($handle) {
 $handle = $handle | 0;
 var $$0 = 0, $0 = 0;
 $0 = HEAP32[$handle >> 2] | 0;
 if (!$0) $$0 = -1; else {
  _free($0);
  HEAP32[$handle >> 2] = 0;
  $$0 = 0;
 }
 return $$0 | 0;
}

function _arSetMatrixCodeType($handle, $type) {
 $handle = $handle | 0;
 $type = $type | 0;
 var $$0 = 0;
 if (!$handle) $$0 = -1; else {
  HEAP32[$handle + 7062424 >> 2] = $type;
  $$0 = 0;
 }
 return $$0 | 0;
}
function stackAlloc(size) {
 size = size | 0;
 var ret = 0;
 ret = STACKTOP;
 STACKTOP = STACKTOP + size | 0;
 STACKTOP = STACKTOP + 15 & -16;
 if ((STACKTOP | 0) >= (STACK_MAX | 0)) abort();
 return ret | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEEN10__cxxabiv112_GLOBAL__N_112malloc_allocIcEEED2Ev($this) {
 $this = $this | 0;
 if (HEAP8[$this >> 0] & 1) _free(HEAP32[$this + 8 >> 2] | 0);
 return;
}

function ___syscall_ret($r) {
 $r = $r | 0;
 var $$0 = 0, $2 = 0;
 if ($r >>> 0 > 4294963200) {
  $2 = ___errno_location() | 0;
  HEAP32[$2 >> 2] = 0 - $r;
  $$0 = -1;
 } else $$0 = $r;
 return $$0 | 0;
}

function __ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii($fn, $args, $args1) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = $args1 | 0;
 return FUNCTION_TABLE_iii[$fn & 15]($args, $args1) | 0;
}

function dynCall_iiiii(index, a1, a2, a3, a4) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = a3 | 0;
 a4 = a4 | 0;
 return FUNCTION_TABLE_iiiii[index & 1](a1 | 0, a2 | 0, a3 | 0, a4 | 0) | 0;
}

function __ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii($fn, $args, $args1) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = $args1 | 0;
 FUNCTION_TABLE_vii[$fn & 7]($args, $args1);
 return;
}

function __ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif($fn, $args, $args1) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = +$args1;
 FUNCTION_TABLE_vid[$fn & 3]($args, $args1);
 return;
}

function __ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid($fn, $args, $args1) {
 $fn = $fn | 0;
 $args = $args | 0;
 $args1 = +$args1;
 FUNCTION_TABLE_vid[$fn & 3]($args, $args1);
 return;
}

function _arImageProcFinal($ipi) {
 $ipi = $ipi | 0;
 if ($ipi) {
  if (HEAP32[$ipi + 2076 >> 2] | 0) _free(HEAP32[$ipi >> 2] | 0);
  _free(HEAP32[$ipi + 4 >> 2] | 0);
  _free($ipi);
 }
 return;
}

function __ZN10emscripten8functionIiJiiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 4, 2200, 10910, 1, $fn | 0);
 return;
}

function __ZN10emscripten8functionIiJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 3, 2168, 10905, 13, $fn | 0);
 return;
}

function __ZN10emscripten8functionIvJiiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 3, 2116, 10779, 1, $fn | 0);
 return;
}

function __ZN10emscripten8functionIvJifEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 3, 2104, 10774, 2, $fn | 0);
 return;
}

function __ZN10emscripten8functionIvJidEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 3, 2136, 10788, 1, $fn | 0);
 return;
}

function __ZN10emscripten8functionIiJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 2, 2192, 10800, 10, $fn | 0);
 return;
}

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 & 3](a1 | 0, a2 | 0, a3 | 0, a4 | 0);
}

function __ZN10emscripten8functionIvJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 2, 2152, 10796, 7, $fn | 0);
 return;
}

function __ZN10emscripten8functionIiJEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 1, 2148, 10793, 16, $fn | 0);
 return;
}

function __ZN10emscripten8functionIdJiEJEEEvPKcPFT_DpT0_EDpT1_($name, $fn) {
 $name = $name | 0;
 $fn = $fn | 0;
 __embind_register_function($name | 0, 2, 2128, 10784, 1, $fn | 0);
 return;
}

function _icpGetXw2XcCleanup295($J_U_S, $dU, $E, $E2) {
 $J_U_S = $J_U_S | 0;
 $dU = $dU | 0;
 $E = $E | 0;
 $E2 = $E2 | 0;
 _free($J_U_S);
 _free($dU);
 _free($E);
 _free($E2);
 return;
}

function ___errno_location() {
 var $$0 = 0, $3 = 0;
 if (!(HEAP32[597] | 0)) $$0 = 2644; else {
  $3 = (_pthread_self() | 0) + 60 | 0;
  $$0 = HEAP32[$3 >> 2] | 0;
 }
 return $$0 | 0;
}

function __ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev($this) {
 $this = $this | 0;
 if (HEAP8[$this >> 0] & 1) __ZdlPv(HEAP32[$this + 8 >> 2] | 0);
 return;
}

function _i64Add(a, b, c, d) {
 a = a | 0;
 b = b | 0;
 c = c | 0;
 d = d | 0;
 var l = 0;
 l = a + c >>> 0;
 return (tempRet0 = b + d + (l >>> 0 < a >>> 0 | 0) >>> 0, l | 0) | 0;
}

function __ZN10emscripten8constantIdEEvPKcRKT_($name, $v) {
 $name = $name | 0;
 $v = $v | 0;
 __embind_register_constant($name | 0, 720, ~~+HEAPF64[$v >> 3] >>> 0 | 0);
 return;
}

function dynCall_iiii(index, a1, a2, a3) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = a3 | 0;
 return FUNCTION_TABLE_iiii[index & 15](a1 | 0, a2 | 0, a3 | 0) | 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;
 return ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0;
}

function _strchr($s, $c) {
 $s = $s | 0;
 $c = $c | 0;
 var $0 = 0;
 $0 = ___strchrnul($s, $c) | 0;
 return ((HEAP8[$0 >> 0] | 0) == ($c & 255) << 24 >> 24 ? $0 : 0) | 0;
}

function __ZN10emscripten8constantIiEEvPKcRKT_($name, $v) {
 $name = $name | 0;
 $v = $v | 0;
 __embind_register_constant($name | 0, 680, HEAP32[$v >> 2] | 0);
 return;
}

function dynCall_viii(index, a1, a2, a3) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = a3 | 0;
 FUNCTION_TABLE_viii[index & 1](a1 | 0, a2 | 0, a3 | 0);
}

function __ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi($fn, $args) {
 $fn = $fn | 0;
 $args = $args | 0;
 return FUNCTION_TABLE_ii[$fn & 31]($args) | 0;
}

function __ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi($fn, $args) {
 $fn = $fn | 0;
 $args = $args | 0;
 return +(+FUNCTION_TABLE_di[$fn & 3]($args));
}

function __ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi($fn, $args) {
 $fn = $fn | 0;
 $args = $args | 0;
 FUNCTION_TABLE_vi[$fn & 15]($args);
 return;
}

function _compE($a, $b) {
 $a = $a | 0;
 $b = $b | 0;
 var $2 = 0.0;
 $2 = +HEAPF64[$a >> 3] - +HEAPF64[$b >> 3];
 return ($2 < 0.0 ? -1 : $2 > 0.0 & 1) | 0;
}

function dynCall_viid(index, a1, a2, a3) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 a3 = +a3;
 FUNCTION_TABLE_viid[index & 3](a1 | 0, a2 | 0, +a3);
}

function _isxdigit($c) {
 $c = $c | 0;
 var $4 = 0;
 if (($c + -48 | 0) >>> 0 < 10) $4 = 1; else $4 = (($c | 32) + -97 | 0) >>> 0 < 6;
 return $4 & 1 | 0;
}

function establishStackSpace(stackBase, stackMax) {
 stackBase = stackBase | 0;
 stackMax = stackMax | 0;
 STACKTOP = stackBase;
 STACK_MAX = stackMax;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewItEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(512, 3, $name | 0);
 return;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewIsEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(520, 2, $name | 0);
 return;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewIjEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(496, 5, $name | 0);
 return;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewIiEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(504, 4, $name | 0);
 return;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewIhEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(528, 1, $name | 0);
 return;
}

function __ZN12_GLOBAL__N_1L20register_memory_viewIaEEvPKc($name) {
 $name = $name | 0;
 __embind_register_memory_view(536, 0, $name | 0);
 return;
}

function __ZNKSt3__121__basic_string_commonILb1EE20__throw_out_of_rangeEv($this) {
 $this = $this | 0;
 ___assert_fail(14152, 12528, 1175, 14181);
}

function __ZNKSt3__121__basic_string_commonILb1EE20__throw_length_errorEv($this) {
 $this = $this | 0;
 ___assert_fail(12499, 12528, 1164, 12463);
}

function dynCall_iii(index, a1, a2) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 return FUNCTION_TABLE_iii[index & 15](a1 | 0, a2 | 0) | 0;
}

function b13(p0, p1, p2, p3, p4, p5) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 p3 = p3 | 0;
 p4 = p4 | 0;
 p5 = p5 | 0;
 nullFunc_viiiiii(13);
}

function _wctomb($s, $wc) {
 $s = $s | 0;
 $wc = $wc | 0;
 var $$0 = 0;
 if (!$s) $$0 = 0; else $$0 = _wcrtomb($s, $wc, 0) | 0;
 return $$0 | 0;
}

function __ZNKSt3__120__vector_base_commonILb1EE20__throw_length_errorEv($this) {
 $this = $this | 0;
 ___assert_fail(12352, 12375, 303, 12463);
}

function dynCall_dii(index, a1, a2) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 return +FUNCTION_TABLE_dii[index & 1](a1 | 0, a2 | 0);
}

function setThrew(threw, value) {
 threw = threw | 0;
 value = value | 0;
 if (!__THREW__) {
  __THREW__ = threw;
  threwValue = value;
 }
}

function _fseek($f, $off, $whence) {
 $f = $f | 0;
 $off = $off | 0;
 $whence = $whence | 0;
 return ___fseeko($f, $off, $whence) | 0;
}

function dynCall_vii(index, a1, a2) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = a2 | 0;
 FUNCTION_TABLE_vii[index & 7](a1 | 0, a2 | 0);
}

function _mbsinit($st) {
 $st = $st | 0;
 var $4 = 0;
 if (!$st) $4 = 1; else $4 = (HEAP32[$st >> 2] | 0) == 0;
 return $4 & 1 | 0;
}

function _do_read($f, $buf, $len) {
 $f = $f | 0;
 $buf = $buf | 0;
 $len = $len | 0;
 return ___string_read($f, $buf, $len) | 0;
}

function dynCall_vid(index, a1, a2) {
 index = index | 0;
 a1 = a1 | 0;
 a2 = +a2;
 FUNCTION_TABLE_vid[index & 3](a1 | 0, +a2);
}

function b1(p0, p1, p2, p3, p4) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 p3 = p3 | 0;
 p4 = p4 | 0;
 nullFunc_viiiii(1);
}

function _arMultiFreeConfig($config) {
 $config = $config | 0;
 _free(HEAP32[$config >> 2] | 0);
 _free($config);
 return 0;
}

function __ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE($fn) {
 $fn = $fn | 0;
 return FUNCTION_TABLE_i[$fn & 1]() | 0;
}

function _icpGetXw2XcCleanup($J_U_S, $dU) {
 $J_U_S = $J_U_S | 0;
 $dU = $dU | 0;
 _free($J_U_S);
 _free($dU);
 return;
}

function b12(p0, p1, p2, p3) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 p3 = p3 | 0;
 nullFunc_iiiii(12);
 return 0;
}

function _strncpy($d, $s, $n) {
 $d = $d | 0;
 $s = $s | 0;
 $n = $n | 0;
 ___stpncpy($d, $s, $n) | 0;
 return $d | 0;
}

function dynCall_ii(index, a1) {
 index = index | 0;
 a1 = a1 | 0;
 return FUNCTION_TABLE_ii[index & 31](a1 | 0) | 0;
}

function _strcpy($dest, $src) {
 $dest = $dest | 0;
 $src = $src | 0;
 ___stpcpy($dest, $src) | 0;
 return $dest | 0;
}

function __GLOBAL__sub_I_bind_cpp() {
 __ZN53EmscriptenBindingInitializer_native_and_builtin_typesC2Ev(0);
 return;
}

function _strrchr($s, $c) {
 $s = $s | 0;
 $c = $c | 0;
 return ___memrchr($s, $c, (_strlen($s) | 0) + 1 | 0) | 0;
}

function _ar3DCreateHandle($arParam) {
 $arParam = $arParam | 0;
 return _ar3DCreateHandle2($arParam + 8 | 0) | 0;
}

function dynCall_di(index, a1) {
 index = index | 0;
 a1 = a1 | 0;
 return +FUNCTION_TABLE_di[index & 3](a1 | 0);
}

function _fputs($s, $f) {
 $s = $s | 0;
 $f = $f | 0;
 return (_fwrite($s, _strlen($s) | 0, 1, $f) | 0) + -1 | 0;
}

function __ZSt15get_new_handlerv() {
 var $0 = 0;
 $0 = HEAP32[559] | 0;
 HEAP32[559] = $0 + 0;
 return $0 | 0;
}

function _arMatrixFree($m) {
 $m = $m | 0;
 if ($m) {
  _free(HEAP32[$m >> 2] | 0);
  _free($m);
 }
 return 0;
}

function __ZN10__cxxabiv123__fundamental_type_infoD0Ev($this) {
 $this = $this | 0;
 __ZdlPv($this);
 return;
}

function b15(p0, p1, p2, p3) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 p3 = p3 | 0;
 nullFunc_viiii(15);
}

function __ZN10__cxxabiv121__vmi_class_type_infoD0Ev($this) {
 $this = $this | 0;
 __ZdlPv($this);
 return;
}

function dynCall_vi(index, a1) {
 index = index | 0;
 a1 = a1 | 0;
 FUNCTION_TABLE_vi[index & 15](a1 | 0);
}

function __ZN10__cxxabiv120__si_class_type_infoD0Ev($this) {
 $this = $this | 0;
 __ZdlPv($this);
 return;
}

function __ZN10__cxxabiv117__class_type_infoD0Ev($this) {
 $this = $this | 0;
 __ZdlPv($this);
 return;
}

function _cleanup392($p) {
 $p = $p | 0;
 if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p);
 return;
}

function _cleanup387($p) {
 $p = $p | 0;
 if (!(HEAP32[$p + 68 >> 2] | 0)) ___unlockfile($p);
 return;
}

function b0(p0, p1, p2) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 nullFunc_iiii(0);
 return 0;
}

function _isspace($c) {
 $c = $c | 0;
 return (($c | 0) == 32 | ($c + -9 | 0) >>> 0 < 5) & 1 | 0;
}

function ___getTypeName($ti) {
 $ti = $ti | 0;
 return ___strdup(HEAP32[$ti + 4 >> 2] | 0) | 0;
}

function _arVecFree($v) {
 $v = $v | 0;
 _free(HEAP32[$v >> 2] | 0);
 _free($v);
 return 0;
}

function dynCall_i(index) {
 index = index | 0;
 return FUNCTION_TABLE_i[index & 1]() | 0;
}

function __ZNK10__cxxabiv116__shim_type_info5noop2Ev($this) {
 $this = $this | 0;
 return;
}

function __ZNK10__cxxabiv116__shim_type_info5noop1Ev($this) {
 $this = $this | 0;
 return;
}

function b9(p0, p1, p2) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = p2 | 0;
 nullFunc_viii(9);
}

function b11(p0, p1, p2) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 p2 = +p2;
 nullFunc_viid(11);
}

function _setLogLevel($level) {
 $level = $level | 0;
 HEAP32[496] = $level;
 return;
}

function __ZN10__cxxabiv116__shim_type_infoD2Ev($this) {
 $this = $this | 0;
 return;
}

function __ZNSt9bad_allocD0Ev($this) {
 $this = $this | 0;
 __ZdlPv($this);
 return;
}

function _copysignl($x, $y) {
 $x = +$x;
 $y = +$y;
 return +(+_copysign($x, $y));
}

function _scalbnl($x, $n) {
 $x = +$x;
 $n = $n | 0;
 return +(+_scalbn($x, $n));
}

function b2(p0, p1) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 nullFunc_dii(2);
 return 0.0;
}

function b14(p0, p1) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 nullFunc_iii(14);
 return 0;
}

function dynCall_v(index) {
 index = index | 0;
 FUNCTION_TABLE_v[index & 0]();
}

function _frexpl($x, $e) {
 $x = +$x;
 $e = $e | 0;
 return +(+_frexp($x, $e));
}

function __ZNKSt9bad_alloc4whatEv($this) {
 $this = $this | 0;
 return 12484;
}

function _isupper($c) {
 $c = $c | 0;
 return ($c + -65 | 0) >>> 0 < 26 | 0;
}

function _fmodl($x, $y) {
 $x = +$x;
 $y = +$y;
 return +(+_fmod($x, $y));
}

function _arPattCreateHandle() {
 return _arPattCreateHandle2(16, 50) | 0;
}

function setTempRet0(value) {
 value = value | 0;
 tempRet0 = value;
}

function b7(p0, p1) {
 p0 = p0 | 0;
 p1 = p1 | 0;
 nullFunc_vii(7);
}

function __ZNSt9type_infoD2Ev($this) {
 $this = $this | 0;
 return;
}

function __ZNSt9exceptionD2Ev($this) {
 $this = $this | 0;
 return;
}

function __ZNSt9bad_allocD2Ev($this) {
 $this = $this | 0;
 return;
}

function __ZdlPv($ptr) {
 $ptr = $ptr | 0;
 _free($ptr);
 return;
}

function b3(p0, p1) {
 p0 = p0 | 0;
 p1 = +p1;
 nullFunc_vid(3);
}

function _ftell($f) {
 $f = $f | 0;
 return ___ftello($f) | 0;
}

function stackRestore(top) {
 top = top | 0;
 STACKTOP = top;
}

function b4(p0) {
 p0 = p0 | 0;
 nullFunc_di(4);
 return 0.0;
}

function b8(p0) {
 p0 = p0 | 0;
 nullFunc_ii(8);
 return 0;
}

function ___unlockfile($f) {
 $f = $f | 0;
 return;
}

function ___lockfile($f) {
 $f = $f | 0;
 return 0;
}

function _getLogLevel() {
 return HEAP32[496] | 0;
}

function b6(p0) {
 p0 = p0 | 0;
 nullFunc_vi(6);
}

function getTempRet0() {
 return tempRet0 | 0;
}

function stackSave() {
 return STACKTOP | 0;
}

function b5() {
 nullFunc_i(5);
 return 0;
}

function b10() {
 nullFunc_v(10);
}

// EMSCRIPTEN_END_FUNCS
var FUNCTION_TABLE_iiii = [b0,__ZNK10__cxxabiv123__fundamental_type_info9can_catchEPKNS_16__shim_type_infoERPv,__ZNK10__cxxabiv117__class_type_info9can_catchEPKNS_16__shim_type_infoERPv,_sn_write,___stdio_write,___stdio_seek,___stdout_write,_setup,_setMarkerInfoDir,_getTransMatSquare,_getTransMatSquareCont,_getMultiEachMarkerInfo,__ZN10emscripten8internal7InvokerIiJiNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiiS8_EiPNS0_11BindingTypeIS8_EUt_E,__ZN10emscripten8internal7InvokerIiJiiEE6invokeEPFiiiEii,___stdio_read,_do_read];
var FUNCTION_TABLE_viiiii = [b1,__ZNK10__cxxabiv117__class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv120__si_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib,__ZNK10__cxxabiv121__vmi_class_type_info16search_below_dstEPNS_19__dynamic_cast_infoEPKvib];
var FUNCTION_TABLE_dii = [b2,__ZN10emscripten8internal7InvokerIdJiEE6invokeEPFdiEi];
var FUNCTION_TABLE_vid = [b3,_setProjectionNearPlane,_setProjectionFarPlane,_setPattRatio];
var FUNCTION_TABLE_di = [b4,_getProjectionNearPlane,_getProjectionFarPlane,_getPattRatio];
var FUNCTION_TABLE_i = [b5,_getLogLevel];
var FUNCTION_TABLE_vi = [b6,__ZNSt9bad_allocD2Ev,__ZNSt9bad_allocD0Ev,__ZN10__cxxabiv116__shim_type_infoD2Ev,__ZN10__cxxabiv123__fundamental_type_infoD0Ev,__ZNK10__cxxabiv116__shim_type_info5noop1Ev,__ZNK10__cxxabiv116__shim_type_info5noop2Ev,__ZN10__cxxabiv117__class_type_infoD0Ev,__ZN10__cxxabiv120__si_class_type_infoD0Ev,__ZN10__cxxabiv121__vmi_class_type_infoD0Ev,_setLogLevel,__ZNSt3__113unordered_mapIi12arControllerNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,__ZNSt3__113unordered_mapIi7ARParamNS_4hashIiEENS_8equal_toIiEENS_9allocatorINS_4pairIKiS1_EEEEED2Ev,_cleanup387,_cleanup392,b6];
var FUNCTION_TABLE_vii = [b7,_setThresholdMode,_setThreshold,_setPatternDetectionMode,_setMatrixCodeType,_setLabelingMode,_setImageProcMode,__ZN10emscripten8internal7InvokerIvJiEE6invokeEPFviEi];
var FUNCTION_TABLE_ii = [b8,__ZNKSt9bad_alloc4whatEv,___stdio_close,_teardown,_getMultiMarkerCount,_loadCamera,_detectMarker,_getMarkerNum,_getDebugMode,_getProcessingImage,_getThresholdMode,_getThreshold,_getPatternDetectionMode,_getMatrixCodeType,_getLabelingMode,_getImageProcMode,__ZN10emscripten8internal7InvokerIiJEE6invokeEPFivE,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8,b8
,b8,b8,b8];
var FUNCTION_TABLE_viii = [b9,__ZN10emscripten8internal7InvokerIvJiiEE6invokeEPFviiEii];
var FUNCTION_TABLE_v = [b10];
var FUNCTION_TABLE_viid = [b11,__ZN10emscripten8internal7InvokerIvJidEE6invokeEPFvidEid,__ZN10emscripten8internal7InvokerIvJifEE6invokeEPFvifEif,b11];
var FUNCTION_TABLE_iiiii = [b12,__ZN10emscripten8internal7InvokerIiJiiiEE6invokeEPFiiiiEiii];
var FUNCTION_TABLE_viiiiii = [b13,__ZNK10__cxxabiv117__class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv120__si_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib,__ZNK10__cxxabiv121__vmi_class_type_info16search_above_dstEPNS_19__dynamic_cast_infoEPKvS4_ib];
var FUNCTION_TABLE_iii = [b14,_compE,_addMarker,_addMultiMarker,_getMultiMarkerNum,_setMarkerInfoVertex,_getTransMatMultiSquare,_getTransMatMultiSquareRobust,_getMarkerInfo,_setDebugMode,__ZN10emscripten8internal7InvokerIiJiEE6invokeEPFiiEi,__ZN10emscripten8internal7InvokerIiJNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE6invokeEPFiS8_EPNS0_11BindingTypeIS8_EUt_E,b14,b14,b14,b14];
var FUNCTION_TABLE_viiii = [b15,__ZNK10__cxxabiv117__class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv120__si_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi,__ZNK10__cxxabiv121__vmi_class_type_info27has_unambiguous_public_baseEPNS_19__dynamic_cast_infoEPvi];

  return { _malloc: _malloc, _i64Subtract: _i64Subtract, _fflush: _fflush, _i64Add: _i64Add, _memmove: _memmove, _memset: _memset, ___cxa_demangle: ___cxa_demangle, _memcpy: _memcpy, ___getTypeName: ___getTypeName, _bitshift64Lshr: _bitshift64Lshr, _free: _free, ___errno_location: ___errno_location, _bitshift64Shl: _bitshift64Shl, __GLOBAL__sub_I_ARToolKitJS_cpp: __GLOBAL__sub_I_ARToolKitJS_cpp, __GLOBAL__sub_I_bind_cpp: __GLOBAL__sub_I_bind_cpp, runPostSets: runPostSets, _emscripten_replace_memory: _emscripten_replace_memory, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_iiii: dynCall_iiii, dynCall_viiiii: dynCall_viiiii, dynCall_dii: dynCall_dii, dynCall_vid: dynCall_vid, dynCall_di: dynCall_di, dynCall_i: dynCall_i, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_v: dynCall_v, dynCall_viid: dynCall_viid, dynCall_iiiii: dynCall_iiiii, dynCall_viiiiii: dynCall_viiiiii, dynCall_iii: dynCall_iii, dynCall_viiii: dynCall_viiii };
})
// EMSCRIPTEN_END_ASM
(Module.asmGlobalArg, Module.asmLibraryArg, buffer);
var real____cxa_demangle = asm["___cxa_demangle"]; asm["___cxa_demangle"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real____cxa_demangle.apply(null, arguments);
};

var real__i64Subtract = asm["_i64Subtract"]; asm["_i64Subtract"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__i64Subtract.apply(null, arguments);
};

var real___GLOBAL__sub_I_bind_cpp = asm["__GLOBAL__sub_I_bind_cpp"]; asm["__GLOBAL__sub_I_bind_cpp"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real___GLOBAL__sub_I_bind_cpp.apply(null, arguments);
};

var real__fflush = asm["_fflush"]; asm["_fflush"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__fflush.apply(null, arguments);
};

var real___GLOBAL__sub_I_ARToolKitJS_cpp = asm["__GLOBAL__sub_I_ARToolKitJS_cpp"]; asm["__GLOBAL__sub_I_ARToolKitJS_cpp"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real___GLOBAL__sub_I_ARToolKitJS_cpp.apply(null, arguments);
};

var real__i64Add = asm["_i64Add"]; asm["_i64Add"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__i64Add.apply(null, arguments);
};

var real__memmove = asm["_memmove"]; asm["_memmove"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__memmove.apply(null, arguments);
};

var real__malloc = asm["_malloc"]; asm["_malloc"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__malloc.apply(null, arguments);
};

var real____getTypeName = asm["___getTypeName"]; asm["___getTypeName"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real____getTypeName.apply(null, arguments);
};

var real__bitshift64Lshr = asm["_bitshift64Lshr"]; asm["_bitshift64Lshr"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__bitshift64Lshr.apply(null, arguments);
};

var real__free = asm["_free"]; asm["_free"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__free.apply(null, arguments);
};

var real____errno_location = asm["___errno_location"]; asm["___errno_location"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real____errno_location.apply(null, arguments);
};

var real__bitshift64Shl = asm["_bitshift64Shl"]; asm["_bitshift64Shl"] = function() {
assert(runtimeInitialized, 'you need to wait for the runtime to be ready (e.g. wait for main() to be called)');
assert(!runtimeExited, 'the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)');
return real__bitshift64Shl.apply(null, arguments);
};
var ___cxa_demangle = Module["___cxa_demangle"] = asm["___cxa_demangle"];
var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
var __GLOBAL__sub_I_bind_cpp = Module["__GLOBAL__sub_I_bind_cpp"] = asm["__GLOBAL__sub_I_bind_cpp"];
var _fflush = Module["_fflush"] = asm["_fflush"];
var __GLOBAL__sub_I_ARToolKitJS_cpp = Module["__GLOBAL__sub_I_ARToolKitJS_cpp"] = asm["__GLOBAL__sub_I_ARToolKitJS_cpp"];
var _i64Add = Module["_i64Add"] = asm["_i64Add"];
var _memmove = Module["_memmove"] = asm["_memmove"];
var _memset = Module["_memset"] = asm["_memset"];
var runPostSets = Module["runPostSets"] = asm["runPostSets"];
var _malloc = Module["_malloc"] = asm["_malloc"];
var _memcpy = Module["_memcpy"] = asm["_memcpy"];
var ___getTypeName = Module["___getTypeName"] = asm["___getTypeName"];
var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
var _free = Module["_free"] = asm["_free"];
var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = asm["_emscripten_replace_memory"];
var ___errno_location = Module["___errno_location"] = asm["___errno_location"];
var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"];
var dynCall_dii = Module["dynCall_dii"] = asm["dynCall_dii"];
var dynCall_vid = Module["dynCall_vid"] = asm["dynCall_vid"];
var dynCall_di = Module["dynCall_di"] = asm["dynCall_di"];
var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"];
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_viii = Module["dynCall_viii"] = asm["dynCall_viii"];
var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"];
var dynCall_viid = Module["dynCall_viid"] = asm["dynCall_viid"];
var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"];
var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"];
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.establishStackSpace = asm['establishStackSpace'];

Runtime.setTempRet0 = asm['setTempRet0'];
Runtime.getTempRet0 = asm['getTempRet0'];



// === Auto-generated postamble setup entry stuff ===


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']) 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);


  try {

    var ret = Module['_main'](argc, argv, 0);


    // if we're not running an evented main loop, it's time to exit
    exit(ret, /* implicit = */ true);
  }
  catch(e) {
    if (e instanceof ExitStatus) {
      // exit() throws this once it's done to make sure execution
      // has been stopped completely
      return;
    } else if (e == 'SimulateInfiniteLoop') {
      // running an evented main loop, don't immediately exit
      Module['noExitRuntime'] = true;
      return;
    } else {
      if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
      throw e;
    }
  } finally {
    calledMain = true;
  }
}




function run(args) {
  args = args || Module['arguments'];

  if (preloadStartTime === null) preloadStartTime = Date.now();

  if (runDependencies > 0) {
    Module.printErr('run() called, but dependencies remain, so not running');
    return;
  }

  preRun();

  if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
  if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame

  function doRun() {
    if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
    Module['calledRun'] = true;

    if (ABORT) return; 

    ensureInitRuntime();

    preMain();

    if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
      Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');
    }

    if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized']();

    if (Module['_main'] && shouldRunNow) Module['callMain'](args);

    postRun();
  }

  if (Module['setStatus']) {
    Module['setStatus']('Running...');
    setTimeout(function() {
      setTimeout(function() {
        Module['setStatus']('');
      }, 1);
      doRun();
    }, 1);
  } else {
    doRun();
  }
}
Module['run'] = Module.run = run;

function exit(status, implicit) {
  if (implicit && Module['noExitRuntime']) {
    Module.printErr('exit(' + status + ') implicitly called by end of main(), but noExitRuntime, so not exiting the runtime (you can use emscripten_force_exit, if you want to force a true shutdown)');
    return;
  }

  if (Module['noExitRuntime']) {
    Module.printErr('exit(' + status + ') called, but noExitRuntime, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)');
  } else {

    ABORT = true;
    EXITSTATUS = status;
    STACKTOP = initialStackTop;

    exitRuntime();

    if (Module['onExit']) Module['onExit'](status);
  }

  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;

var abortDecorators = [];

function abort(what) {
  if (what !== undefined) {
    Module.print(what);
    Module.printErr(what);
    what = JSON.stringify(what)
  } else {
    what = '';
  }

  ABORT = true;
  EXITSTATUS = 1;

  var extra = '';

  var output = 'abort(' + what + ') at ' + stackTrace() + extra;
  if (abortDecorators) {
    abortDecorators.forEach(function(decorator) {
      output = decorator(output, what);
    });
  }
  throw output;
}
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}}







Anon7 - 2022
AnonSec Team